在Python中以编程方式断开/nohup

在Python中以编程方式断开/nohup,python,Python,我想运行一个小脚本,每X秒/分钟ping一次服务器,如果没有得到预期的响应,请向指定的电子邮件地址发送电子邮件,通知我服务器已关闭。 显然,我想在某台服务器上使用nohup选项运行此脚本,以便在断开连接时它保持活动状态。我正在使用smtplib()发送电子邮件,一切都很好。但是,因为我不想在脚本中硬编码电子邮件帐户的密码,所以我希望以交互方式将其提供给python脚本。这就是我没有让它与nohup选项结合使用的地方。(例如,运行nohup pingServer.py-u-p&似乎有点取消了noh

我想运行一个小脚本,每X秒/分钟ping一次服务器,如果没有得到预期的响应,请向指定的电子邮件地址发送电子邮件,通知我服务器已关闭。 显然,我想在某台服务器上使用nohup选项运行此脚本,以便在断开连接时它保持活动状态。我正在使用smtplib()发送电子邮件,一切都很好。但是,因为我不想在脚本中硬编码电子邮件帐户的密码,所以我希望以交互方式将其提供给python脚本。这就是我没有让它与nohup选项结合使用的地方。(例如,运行
nohup pingServer.py-u-p&
似乎有点取消了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
的输出给了我:

27489 pts/4 S 0:00 python pingServer.py-u-p
我的电子邮件和密码都以明文形式显示在终端窗口中。看到进程在服务器上运行,这绝对不是我想要的

有没有人对如何绕过这个问题有一些想法? 我喜欢编写这个小脚本的练习,也喜欢这个小挑战,因此我就这样做了。但是可能有更好的方法来实现这种服务器/服务停机时的通知服务

如果有人能给我一些指点,告诉我如何避免以明文显示我的密码,并以一种安全的方式将其传递给python脚本,而不需要挂断,那就太好了(也就是说,在交互提示完成后,以编程方式在python中断开/设置nohup,当然这很可能是完全不可能的)。或者,可以通过某种模糊/加密的方式将密码传递给python


或者,任何关于如何实现相同目的的提示(例如,当服务器没有返回预期响应时收到电子邮件)也将受到欢迎(尽管自己动手/自己动手更酷:)

您可以使用openssl加密密码

例如:

echo $(openssl passwd -crypt mypassword)
输出:

eXzWQlhzBJZ9.
同样地,您可以将其作为-

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

这样你就可以加密你的密码了。我希望这会有所帮助。

你可以使用openssl加密你的密码

例如:

echo $(openssl passwd -crypt mypassword)
输出:

eXzWQlhzBJZ9.
同样地,您可以将其作为-

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

通过这种方式,您可以加密密码。我希望它会有所帮助。

将凭据存储在只有python进程才能读取的文件中有问题吗?这是需要身份验证令牌的命令行UTIL的数量,例如,aws cli从
~/.aws/config
读取凭据存储在只有您的python进程才能读取的文件中有问题吗python进程可以读取?这是需要身份验证令牌的命令行UTIL的工作数量,例如aws cli从
~/.aws/config