簡體   English   中英

如何使用Python編輯遠程UNIX服務器中存在的crontab文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM