python gnupg over ssh在python shell中工作,而不是在脚本中工作
这是一个关于通过SSH在pythons交互模式下工作的命令的问题,但如果包含在脚本中,则不包括该命令。它快把我逼疯了。我一直在使用脚本时遇到问题,但现在我发现我可以简单地将这些行放入python shell中,并得到我所期望的确切结果!这让我很困惑,我不知道如何继续,因为我需要它在脚本中工作。对于pythonshell,我通过SSH登录,然后打开一个python脚本,而不是通过pythonsh模块登录。从那里,它的工作完全符合预期python gnupg over ssh在python shell中工作,而不是在脚本中工作,python,ssh,gnupg,Python,Ssh,Gnupg,这是一个关于通过SSH在pythons交互模式下工作的命令的问题,但如果包含在脚本中,则不包括该命令。它快把我逼疯了。我一直在使用脚本时遇到问题,但现在我发现我可以简单地将这些行放入python shell中,并得到我所期望的确切结果!这让我很困惑,我不知道如何继续,因为我需要它在脚本中工作。对于pythonshell,我通过SSH登录,然后打开一个python脚本,而不是通过pythonsh模块登录。从那里,它的工作完全符合预期 import ssh import gnupg import p
import ssh
import gnupg
import pickle
s = ssh.Connection(host = 'ipaddress', username = 'toolserv', password = 'xxxx')
gpg = gnupg.GPG(gnupghome="/home/toolserv/.gnupg")
with open("result1.txt", "r") as my_file:
signed_data1 = pickle.load(my_file)
my_file.close()
print signed_data1
s.close()
如果我从sudo执行脚本,那么从脚本中得到的错误是:
Traceback (most recent call last):
File "sshx.py", line 11, in <module>
with open("result1.txt", "r") as my_file:
IOError: [Errno 2] No such file or directory: 'result1.txt
回溯(最近一次呼叫最后一次):
文件“sshx.py”,第11行,在
打开(“result1.txt”、“r”)作为我的_文件:
IOError:[Errno 2]没有这样的文件或目录:“result1.txt”
ls-ld给出了以下结果:
drwxr-xr-x 29工具维修工具维修4096 2012-08-19 22:38初始答案
脚本将在本地主机上执行,而不是在目标服务器上执行。注意如何打开SSH
会话,然后不使用它
此主机上可能不存在toolserv
用户。因此,当gnupg
尝试创建目录时会出现错误
针对你的评论:
让我说清楚一点。仅调用s=ssh.Connection(主机='ipaddress',用户名='toolserv',密码='xxxx')
并不意味着所有后续代码都将在远程主机上执行
现在,您编写的代码执行以下操作:
ipaddress
的远程主机/home/toolserv/.gnupg
的键的gnupg库SSH
会话,然后不使用它
此主机上可能不存在toolserv
用户。因此,当gnupg
尝试创建目录时会出现错误
针对你的评论:
让我说清楚一点。仅调用s=ssh.Connection(主机='ipaddress',用户名='toolserv',密码='xxxx')
并不意味着所有后续代码都将在远程主机上执行
现在,您编写的代码执行以下操作:
ipaddress
的远程主机/home/toolserv/.gnupg
的键的gnupg库最后一次,您的脚本可能不会执行您认为它会执行的操作,除非您对此进行调查,否则它永远不会工作。如何启动脚本?试试这个:
sudopythonscript.py
?我刚刚在命令行中添加了“pythonsshx.py”如何启动脚本?试试这个:sudo python script.py
?我刚把“python sshx.py”放在命令lineapologies中,我编辑了这个问题以反映我是如何登录的。首先,我通过ssh命令行连接到toolserv机器。然后我进入python shell。现在,如果我使用sudo python sshx.py启动脚本,它会给出不同的错误消息。很抱歉给你添麻烦。是的,谢谢。我使用的ssh模块实现了paramiko,因此我现在意识到我必须通过paramiko的内置函数加载文件。抱歉,我已经编辑了这个问题以反映我是如何登录的。首先,我通过ssh命令行连接到toolserv机器。然后我进入python shell。现在,如果我使用sudo python sshx.py启动脚本,它会给出不同的错误消息。很抱歉给你添麻烦。是的,谢谢。我使用的ssh模块实现了paramiko,因此我现在意识到我必须通过paramiko的内置函数加载文件。