这是来自Hyderabad的Srikanth。Cronjob未完全执行Shell脚本
我在公司的一位Linux管理员。我们有一个鱿鱼服务器,所以我准备了一台备份鱿鱼服务器,这样当LIVE Squid服务器出现故障时,我可以将备份服务器置于实时状态。
我的鱿鱼服务器配置了Centos 5.5。我准备了一个脚本,将LIVE服务器的/ etc/squid /中的所有配置文件备份到备份服务器。即它会将所有文件从Live服务器的/ etc/squid /复制到备份服务器的/ etc/squid/
以下是在/ opt /权限755(rwxr-xr-x)目录中保存为squidbackup.sh的脚本。
#! /bin/sh
username="<username>"
password="<password>"
host="Server IP"
expect -c "
spawn /usr/bin/scp -r <username>@Server IP:/etc/squid /etc/
expect {
"*password:*"{
send $password\r;
interact;
}
eof{
exit
}
}
**请注意,这将在备份服务器中执行,该备份服务器将检查脚本中提到的用户。我在现场服务器中创建了一个用户,并在脚本中也给出了相同的用户。
当我使用下面的命令
[[email protected] ~]# sh /opt/squidbackup.sh
一切正常,到现在执行这个命令,这个脚本下载从目录/ etc /鱿鱼/ LIVE服务器中的所有文件的位置在/ etc /鱿鱼/备份服务器的
现在的问题提出了,如果我设置在crontab中像下面或其他定时
50 23 * * * sh /opt/squidbackup.sh
不知道什么是错的,它为n下载所有文件。即Cronjob只会从LIVE服务器的/ etc/squid /下载少量文件到备份服务器的/ etc/squid /中。
**当cron执行脚本时,只会下载几个文件,如果我手动运行此脚本,那么它将完全无需下载任何错误或警告即可下载所有文件。
如果您还有其他问题,请继续发布。
现在,如果有任何解决方案可用,我恳请您提供。
请,请提前谢谢。
感谢您的关注。我已经尝试过你所说的,它显示如下,但以前我用它来获得相同的输出到用户的邮件在鱿鱼备份服务器。
即使在cron日志中它也显示相同,但我无法理解下面几行中的确切错误。
请注意,只有少数文件使用cron下载。
spawn /usr/bin/scp -r <username>@ServerIP:/etc/squid /etc/
<username>@ServerIP's password:
请检查您是否可以提出其他建议。
什么从的cronjob电子邮件说什么? – Flexo 2012-02-20 13:22:06
您拥有全球可读脚本中的明文形式的用户名和密码。这是一个非常糟糕的想法。你应该设置无密码的ssh;在执行脚本的帐户的'$ HOME/.ssh'目录中创建公钥和私钥,并在远程系统上配置'$ HOME/.ssh/authorized_keys'。建立一个没有密码的私钥是最简单的 - 这意味着私钥文件必须保持安全。 (应该可以使用密码设置私钥,让cron作业使用'ssh-agent',但这会变得有点复杂。) – 2012-02-20 23:31:34