Cron

crontab 執行 bash 腳本(其中的 ssh 命令)不起作用

  • September 13, 2017

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

也就是說,我會

  1. 創建一個私鑰/公鑰對
  2. 在私鑰上設置一個空密碼
  3. 在私鑰文件上設置權限 400
  4. 將公鑰放入 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”參數。

引用自:https://serverfault.com/questions/186448