SSHを介してリモートサーバーでいくつかのコマンドを実行するbashスクリプトを作成したいと思います。その後、リモートサーバーを再起動してSSHを介して再接続し、追加のコマンドを実行する必要があります。
私はこのコードを使用しています:
ssh $theip 'sudo reboot'
echo "starting sleep---1"
sleep 30
echo " finished sleeping1"
while ! ping -c 1 $theip &>/dev/null; do echo "waiting..."; done
echo "starting sleep---2"
sleep 45
echo " finished sleeping2"
echo "finished rebooting"
ssh $theip 'commands....'
問題は、サーバーがsshを実行する前にpingを返し、スクリプトが失敗することです。一部のサーバーには45秒以上の省電力時間が必要です。別の方法がありますか?たとえば、whileループでpingの代わりにsshを使用してみてください。
ありがとう、
答え1
"sticky ssh"を取得するには、次のコマンドを試してください。
while true; do command ssh "$@"; [ $? -eq 0 ] && break || sleep 0.5; done
ソース: http://backreference.org/2013/04/26/ssh-auto-reconnect/
答え2
ls -l
ランレベルに従って行動するか、/etc/rc3.d
ランレベル/etc/rc5.d
に従って行動してください。ここで、ネットワークデーモンはsshデーモンの前に起動されることに注意してください。したがって、ping
以前に利用可能ですssh
。リモートコンピュータで実行する前に、wait
もう少し作業を行う必要があります。ssh
私の場合、ネットワーク以降からSSH以前まで19個程度のサービスが始まった。
lrwxrwxrwx 1 root root 17 Sep 9 2011 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 Sep 9 2011 S11auditd -> ../init.d/auditd
lrwxrwxrwx 1 root root 21 Sep 9 2011 S12restorecond -> ../init.d/restorecond
lrwxrwxrwx 1 root root 16 Sep 9 2011 S12syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 20 Sep 9 2011 S13irqbalance -> ../init.d/irqbalance
lrwxrwxrwx 1 root root 19 Sep 9 2011 S15mdmonitor -> ../init.d/mdmonitor
lrwxrwxrwx 1 root root 19 Sep 9 2011 S18rpcidmapd -> ../init.d/rpcidmapd
lrwxrwxrwx 1 root root 17 Sep 9 2011 S19rpcgssd -> ../init.d/rpcgssd
lrwxrwxrwx 1 root root 15 Sep 9 2011 S20kdump -> ../init.d/kdump
lrwxrwxrwx 1 root root 20 Sep 9 2011 S22messagebus -> ../init.d/messagebus
lrwxrwxrwx 1 root root 24 Sep 9 2011 S23setroubleshoot -> ../init.d/setroubleshoot
lrwxrwxrwx 1 root root 15 Sep 9 2011 S25netfs -> ../init.d/netfs
lrwxrwxrwx 1 root root 15 Sep 9 2011 S25pcscd -> ../init.d/pcscd
lrwxrwxrwx 1 root root 15 Sep 9 2011 S26acpid -> ../init.d/acpid
lrwxrwxrwx 1 root root 19 Sep 9 2011 S26haldaemon -> ../init.d/haldaemon
lrwxrwxrwx 1 root root 14 Sep 9 2011 S26hidd -> ../init.d/hidd
lrwxrwxrwx 1 root root 20 Sep 9 2011 S26lm_sensors -> ../init.d/lm_sensors
lrwxrwxrwx 1 root root 16 Sep 9 2011 S28autofs -> ../init.d/autofs
lrwxrwxrwx 1 root root 15 Sep 9 2011 S50hplip -> ../init.d/hplip
lrwxrwxrwx 1 root root 15 Sep 13 2011 S50snmpd -> ../init.d/snmpd
lrwxrwxrwx 1 root root 14 Sep 9 2011 S55sshd -> ../init.d/sshd