【问题标题】:SSH Paramiko command is not changing the directory in remote serverSSH Paramiko 命令未更改远程服务器中的目录
【发布时间】:2017-07-28 02:45:46
【问题描述】:

我正在尝试使用 SSH paramiko 模块和 cd 命令将目录更改为 /etc/init.d。它不会更改目录。登录服务器后在默认目录'root'

def StopAll(path,IP,ROOT,PASSWD):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('%s'%IP, username='%s'%ROOT,password='%s'%PASSWD)
    stdin, stdout, stderr = ssh.exec_command("cd /etc/init.d")
    stdin, stdout, stderr = ssh.exec_command("pwd")
    print stdout.read().strip()

输出:./Installation.py conf/Input.conf

/root

请告诉我代码中的问题在哪里。

【问题讨论】:

  • 不重复。在那个问题中,它提示用户输入,但在这里它没有执行相同的任务。它无法执行简单的linux命令。
  • 同意,但关键是您使用 SSH 的级别远低于您必须使用的级别。
  • 要在远程服务器上执行任何命令,我通常使用 paramiko 模块。我认为它应该可以正常工作。我在代码中缺少一些小东西。需要帮助来解决它
  • 正是链接问题的 OP 最初所说的 :)

标签: python paramiko


【解决方案1】:

您需要获取 sftp 对象并在其上调用 cd:

sftp = paramiko.SFTPClient.from_transport(ssh)

然后

sftp.cd(path)

远程执行 cd

【讨论】:

  • 嗨@Kyle Roux,这是我将其更改为 ssh.cd(path) ./Installation.py conf/Input.conf Traceback (most recent call last): File "./Installation.py", line 61, in <module> StopAll(Installed_Dir,IP3,USERNAME,PASSWORD) File "./Installation.py", line 33, in StopAll stdin, stdout, stderr = ssh.cd("/etc/init.d") AttributeError: 'SSHClient' object has no attribute 'cd' 的错误
  • 哦,是的,您需要获取 sftp 对象并在其上调用 cd:sftp = paramiko.SFTPClient.from_transport(ssh)sftp.cd(path)
猜你喜欢
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
  • 2020-02-15
  • 1970-01-01
  • 2015-02-11
相关资源
最近更新 更多