我需要在多台服务器(所有基于 Unix)上设置一个 cron 作业。为此,我创建了一个脚本(让我们将其称为脚本“A”),它可以在手动执行时正确设置 cron 作业。此外,我已将此脚本上传到所有目标服务器,目的是通过另一台服务器上的另一个脚本自动调用和执行它。
现在,这台服务器包含脚本“B”(如上所述),它登录到所有目标服务器并调用脚本 A 以便在所有服务器上自动设置 cron。
问题是,永远不会调用脚本 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 但没有成功。即使经过大量的翻找,我也找不到合适的解决方案。这里需要帮助!