2011-02-17 64 views
3

我需要將文件(bash腳本)上載到遠程服務器。我使用scp命令。將文件複製到遠程服務器後,我想在遠程服務器上的crontab文件中創建一個cron條目。 但是,文件上傳和寫入cron條目需要在bash shell腳本中進行,這樣我只需要在本地機器上執行腳本,並將腳本複製到遠程主機,並將cron條目寫入crontab 。在shell腳本中使用ssh login在服務器上創建cron條目

有沒有一種方法可以在腳本中使用ssh命令將我登錄到遠程服務器,打開crontab文件並寫入cron條目。

任何幫助是非常歡迎

回答

-1

你的意思是這樣

ssh [email protected] && echo "* * * * * /path/to/script/" >> /etc/crontab 

+0

回聲和重定向到本地創建/ etc/crontab中的SSH登錄成功退出後只發生。並不是OP要求的。 – kmarsh 2016-07-14 17:08:00

0

mailo看起來幾乎是正確的,但該命令將是第二個參數的ssh命令,就像這樣:

ssh [email protected] 'echo "* * * * * /path/to/script/" >> /etc/crontab' 

或者,如果你的系統不會自動加載/ etc/crontab中,你應該能夠管crontab命令是這樣的:

​​
6

我想:

  1. 提取用戶與的crontab
  2. 修改該文件與所需的作業
  3. 導入新的crontab與crontab somefile
+0

這是一個魅力!謝謝! – 2017-07-05 12:33:59

0

說要$local複製到$remote$host並添加小時工有14過去每隔一小時運行,使用單個SSH會話;

ssh "$host" "cat >'$remote' && 
    chmod +x '$remote' && 
    (crontab -l; 
     echo '14 * * * * $remote') | crontab" <"$local" 

這顯然可以更強大的適當的錯誤檢查等,但希望它至少應該讓你開始。

這裏的兩個鍵是ssh命令接受一個任意複雜的shell腳本作爲遠程命令,並從本地主機獲取其標準輸入。所有變量都會在本地主機上插入;因此在遠程主機上執行的命令將類似於cat >'/path/to/remote' && chmod +x '/path/to/remote' && ...使用單引號,可以在文件名中留有空格,但是我沒有把它們放在crontab條目中,因爲它很奇怪,如果你還需要單引號,我相信它應該可以工作。)

1

我只是做了這樣的事情,我需要創建一個多行的crontab在遠程機器上。到目前爲止最簡單的解決方案是管通過ssh內容到遠程crontab命令是這樣的:

echo "$CRON_CONTENTS" | ssh [email protected] crontab