複数のサーバー (すべて Unix ベース) で cron ジョブをセットアップする必要があります。このために、手動で実行したときに cron ジョブを正しく設定するスクリプト (スクリプト "A" と呼びます) を作成しました。また、別のサーバー上の別のスクリプトを介して自動的に呼び出して実行する目的で、このスクリプトをすべてのターゲット サーバーにアップロードしました。
ここで、この別のサーバーには、すべてのターゲット サーバーにログインし、すべてのサーバーで cron を自動的にセットアップするためにスクリプト A を呼び出すスクリプト "B" (上記のとおり) が含まれています。
問題は、スクリプト A が呼び出されず、cron がセットアップされないことです。スクリプト B は Expect スクリプトで、コードは次のとおりです。
spawn rsync -avz -e ssh $localDir/autodir $username@$ipaddress:$remoteDir
sleep 10
expect {
"assword:" {
send "$pwd\r"
sleep 5
exp_continue
}
expect {
"@" {
send "cd /home/$username/autodir/config\r"
sleep 5
exp_continue
expect "@"
send "./setCron.sh" # NEED TO EXECUTE THIS AT REMOTE SERVER
sleep 5
exp_continue
}
}
"yes/no" {
send "yes\r"
set timeout -5
exp_continue
}
-re $prompt {
send "\r"
}
timeout {
exit
}
eof {
exit
}
}
基本的に、いくつかの制限によりこれらの方法の両方を使用できないため、sshまたは公開鍵認証を使用せずにリモートサーバーでスクリプトを呼び出す汎用ソリューションを探しています。したがって、Expect を使用してみましたが、成功しませんでした。いろいろと調べても、適切な解決策を見つけることができませんでした。ここで助けが必要です!