Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在Python3.7中维护paramiko中的会话_Python 3.x_Paramiko - Fatal编程技术网

Python 3.x 如何在Python3.7中维护paramiko中的会话

Python 3.x 如何在Python3.7中维护paramiko中的会话,python-3.x,paramiko,Python 3.x,Paramiko,我正在尝试导航到linux框中的一个文件夹,并使用paramiko更新一个文件 在这里,我需要通过用“;”分隔一次输入所有命令吗或者有没有办法维持一个会话 你能给我同样的建议吗 import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('1.1.1.1',username='abc',password='bnw') cmd

我正在尝试导航到linux框中的一个文件夹,并使用paramiko更新一个文件

在这里,我需要通过用“;”分隔一次输入所有命令吗或者有没有办法维持一个会话

你能给我同样的建议吗

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('1.1.1.1',username='abc',password='bnw')


cmd = 'cd rtg-demo/app-demo;pwd'
stdin, stdout, stderr = ssh.exec_command(cmd)
print(stdout.readlines())
stdin, stdout, stderr = ssh.exec_command('pwd')
print(stdout.readlines())
这里是第一个print语句,我得到了我导航到的正确路径。但对于第二个print语句,我看到了主目录路径

输出如下所示

['/remote/users/abc/rtg-demo/app-demo\n']
['/remote/users/abc\n']

你做得对。另请参见。但如果我有许多语句要执行。例如:我需要导航到一个路径并验证文件是否存在,然后打开并更新该文件。我无法同时提供所有命令。我如何使用paramiko做到这一点。“我不能同时提供所有命令”-为什么?假设我需要导航到一个路径,我将提供cd命令。然后我必须直接获取文件列表。之后,只有当存在特定文件时,我才必须运行命令ssh.exec_command('vi filename)1)避免“导航”到路径,而是使用绝对路径。2) “dir”和在返回列表上运行的命令不是依赖命令。您可以使用单独的
exec\u命令
调用来执行它们。3) 要检索文件列表,您应该使用SFTP命令,而不是shell命令如果你想用你的黑客方式,这已经在中得到了回答(间接链接自我上面链接的问题)