這是來自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