Cron
crontab 執行 bash 腳本(其中的 ssh 命令)不起作用
CentOS 5.4
(在我的腳本文件中 - script.sh)
#!/bin/bash ssh 192.168.0.1 'iptables -L' > /tmp;
(在 /etc/crontab 中)
30 21 30 9 * root /bin/bash /script.sh
如果我在終端中執行腳本,一切正常。但是使用crontab執行它,會生成tmp,但tmp文件(0k)中沒有任何內容。我已經執行了 ssh 代理,所以 ssh 不會提示詢問密碼。這可能是什麼問題?謝謝。
我建議您始終在腳本開頭明確設置所有需要的變數。
PATH=/bin:/usr/bin:/sbin MYVAR=whatever
也就是說,我會
- 創建一個私鑰/公鑰對
- 在私鑰上設置一個空密碼
- 在私鑰文件上設置權限 400
- 將公鑰放入 192.168.0.1 上的 root 使用者的 authorized_keys 文件中
現在嘗試與
#!/bin/bash PATH=/usr/bin ssh -i /myprivatekey -l root 192.168.0.1 '/sbin/iptables -L' > /tmp/output.$$
編輯:我猜想“iptables”命令必須由遠端伺服器上的 root 執行。如果不是,當然必須相應地更改“-l”參數。