[英]How to make changes/edit on a file present on remote server using python fabric?
[英]How to edit crontab file present in the remote UNIX server using Python
我的Python代碼中有一個crontab條目,該條目描述應在指定時間在UNIX遠程服務器中計划哪個腳本。
我正在編寫一個Python腳本,它將使用Paramiko連接到ssh,它將轉到遠程服務器中指定的crontab文件路徑->打開crontab文件->添加Python腳本中指定的crontab條目的末尾文件(在新行上)->保存並退出crontab文件。
請讓我知道我如何實現這一目標。
PS:我已經知道如何使用Paramiko連接到服務器。 只是停留在遠程服務器中的文件處理部分。
我不知道Paramiko的工作原理,但是如果您可以使用Shell,則只需執行以下命令即可:
echo "new line" >> cron_file
此命令會將字符串new line
作為新行添加到文件cron_file
。
crontab -l 2>/dev/null| cat - <(echo "your new crontab entry here") | crontab -
crontab -l
將當前crontab輸出到stdout。
2>/dev/null
[可選]禁止顯示來自crontab -l的錯誤消息。 如果沒有該用戶的crontab條目,您將收到一條錯誤消息。 但這不是問題。
cat - <(echo "your crontab entry here")
-
從管道(crontab -l)獲取輸入,並將其用作第一項內容。 然后其余的將新的crontab條目附加到stdout。 <()語法將命令的輸出包含在內部,並將其存儲在臨時文件中。
crontab -
這會將crontab條目設置為stdin(由於管道,它是先前命令中的所有stdout。)
編輯:看來您需要用bash -c
包裝命令才能使管道正常工作。 請參閱此stackoverflow條目 。
或者,您可以向paramiko發送一系列命令。 只是提防並發。
crontab -l > /tmp/current.cron
echo "your crontab entry here" >> /tmp/current.cron
crontab /tmp/current.cron
另一種選擇是:
crontab <(cat <(crontab -l 2>/dev/null) <(echo "your new crontab entry"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.