我需要编写python脚本,定期通过SFTP将文件发送到远程服务器。我使用Popen类从python脚本执行Linux命令,因为我想稍后检查传输是否成功。
脚本运行正常,但问题是我的SFTP密码以'$$$'
结尾,而'$'
似乎是Linux中的一些特殊字符?
我从Popen打来的命令是:
curl -s -S -T ./file.txt sftp://username:paswwordwith$$$@ip_address
我收到有关密码的错误。从错误消息中我可以看到密码'$$$'
被解释为某个数字......
如何正确输入密码?
答案 0 :(得分:2)
$
在大多数shell中开始一个shell变量引用。将最后一个参数括在单引号中,它应该可以工作。
编辑:David Ehrmann的评论是正确的;我忽视了Popen部分。但是,您将其全部粘贴为一个字符串这一事实让我怀疑您确实在使用shell=True
。在这种情况下,我会使用一个参数列表,并将shell
保留为False
的默认值。