我正在写一个使用命令行实用程序(propietary因此它不能被修改)来完成其部分工作的python应用程序。问题是,我必须将密码作为命令行参数传递给工具,这个工具很容易被任何用户做'ps ax'。我怎样才能将密码安全地从python(或shell脚本)发送到命令行工具?发送密码到命令行工具
回答
如果密码只在命令行上被接受,那么您几乎不走运。你确定没有选择以另一种方式发送密码吗?如果您可以通过流程stdin
发送它,则可以通过管道与它通话,并以此方式安全地发送密码。
如果应用程序有一些交互模式,可以使用类似pyexpect之类的东西。
如果它只接受命令行中的密码,应用程序被设计为易受'ps ax'影响,您如何克服原有的不良设计?它是专有的,投诉应该归罪于有罪的Hauthor。
通过加密密码参数并传递加密密码,您可以获得更高的安全性,并且程序可以解密它。至少不会存在明文密码。当通过另一个进程启动一个进程并传递参数时,我使用了这个方法。尽管如此,你可能并不可行。
编写另一个python脚本,它将使用getpass.getpass()
从命令提示符接受密码并将其存储在一个变量中。然后使用以password作为参数的变量来调用脚本中的命令。
可以强制内联外壳包装像如下
somecommand --password=$(echo "Enter Password: " >&2;read -s PASSWORD;echo $PASSWORD)
密码输入将执行它
密码不会出现在你的shell历史
之前填充命令却会出现在你的'ps'输出中
bash:
command_asking_for_password < <(command_that_prints_a_password; echo -n "\r")
更好地使用'printf' - 当给定一个使用反斜杠的格式字符串时'echo'的行为 - 或者对于'-n'参数 - 是[未定义的POSIX](http:// pubs .opengroup.org/onlinepubs/9699919799/utilities/echo.html),并且在常规shell之间的实践中有所不同(ash和dash的行为与默认配置不同,bash与启用了xpg_echo标志的bash不同) )。 – 2017-11-14 23:56:06
- 1. Visual Studio外部工具发送命令到命令提示符
- 2. 无需命令行工具加密web.config
- 3. Ansible密钥工具:找不到命令
- 4. 如何使用ssh命令在命令中发送密码
- 5. 命令行提示输入密码,无法使用java eclipse发送密码
- 6. 发布一个php命令行工具
- 7. Python代码通过命令行发送命令
- 8. 将参数发送到命令行
- 9. 休眠JPA到DDL命令行工具
- 10. 从命令行发送值?
- 11. 用于.NET开发的命令行工具(或同等工具)
- 12. AWS命令行工具破:(
- 13. IE7 javascript命令行工具
- 14. Nessus命令行工具
- 15. Deflate命令行工具
- 16. Axis2:wsdl2java工具命令行
- 17. ios SDK命令行工具
- 18. 发送命令到进程
- 19. KeyChain安全命令行工具使用查找互联网密码,但找不到通用密码
- 20. 发送命令到其他命令行程序
- 21. 从PHP发送命令到Windows命令行(cmd)
- 22. 发送关键代码到OS X上的命令行程序
- 23. 发送命令密码使用期望在SSH连接脚本
- 24. 的Magento的Cron不发送命令/密码重置邮件
- 25. 发送密码作为命令通过Telnet在C#
- 26. 从java执行命令行工具因命令行而异?
- 27. 使用openssl命令行工具进行AES加密,并使用Java解密
- 28. 让命令行工具继续运行
- 29. 运行命令行工具Java程序
- 30. Tibco发送命令
这很大程度上取决于您要调用的工具如何接受密码。例如,'ssh'接受它从标准输入,如果它是一个终端。 – khachik 2010-12-10 11:09:47
'sudo'会有什么用处? – 2012-10-23 16:31:38