簡體   English   中英

在Python中以編程方式disown / nohup

[英]Programmatically disown/nohup in Python

我想運行一個每X秒/分鍾ping一次服務器的小腳本,如果它沒有得到預期的響應,請發送一封電子郵件到指定的電子郵件地址,通知我服務器已關閉。 顯然,我想在一些帶有nohup選項的服務器上運行此腳本,以便在斷開連接時保持活動狀態。 我正在使用smtplib( https://docs.python.org/3.5/library/smtplib.html )發送電子郵件,一切都很棒。 但是因為我不想在腳本中硬編碼我的電子郵件帳戶的密碼,所以我想以交互方式將它提供給python腳本。 這就是我沒有讓它與nohup選項結合使用的地方。 (例如,運行nohup pingServer.py -u <username> -p <password> &似乎有點取消了nohup / background的想法。在指定密碼然后斷開終端后,進程似乎仍然停止了。

所以我圍繞這個寫了一個小的bash腳本來處理用戶名和密碼的傳遞,並且仍然能夠以nohup / disown的方式進行。 這是我的bash代碼:

#!/bin/bash

read -p "Please enter sender email: " sender
stty -echo
read -p "Plese enter sender password: " passw; echo
stty echo

echo "INFO: Starting pingServer.py now."
echo
python pingServer.py  -u $sender -p $passw &
disown

哪個效果很好,完全符合我的要求。 直到我做了一些健全性檢查,我才注意到ps -ax | grep py的輸出 ps -ax | grep py給了我:

27489 pts/4 S 0:00 python pingServer.py -u <username> -p <password>其中我的電子郵件和密碼都以明文形式顯示在終端窗口中。 看到該進程在服務器上運行,這絕對不是我想要的。

有沒有人對如何解決這個問題有一些想法? 我很喜歡寫這個小劇本並喜歡小小的挑戰,因此以這種方式做到了。 但是,當服務器/服務停機時,可能有更好的方法來實現這種小型通知服務。

如果有人能給我一些關於如何以明文方式顯示我的密碼並以安全的方式將其傳遞給python腳本並且沒有掛斷的指示,那就太棒了(即以編程方式告知/設置nohup)在完成交互式提示之后的python,雖然它當然可能很好,但這根本不可能)。 或者也許可以以一些混淆/加密的方式將密碼傳遞給python?

或者,任何有關如何實現相同的提示(例如,當服務器未返回預期的響應時收到電子郵件)也會受到歡迎(盡管自己做/自己工作當然要冷卻得多:))

您可以使用openssl將密碼設置為加密。

例如 :

echo $(openssl passwd -crypt mypassword)

輸出:

eXzWQlhzBJZ9.

同樣你可以給它 -

nohup pingServer.py -u <username> -p $(openssl passwd -crypt mypassword) &

這樣您就可以加密密碼了。 我希望它有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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