【问题标题】:Run a command on remote server using python使用 python 在远程服务器上运行命令
【发布时间】:2021-01-03 23:25:43
【问题描述】:
cmd ="some command"
echo "The answer is"
echo $cmd

当我尝试在 python 中使用 paramiko 库运行上述命令时。

上面的命令保存在一个名为command的变量中。

stdin,stdout,stderr=ssh_conn.exec_command(command)

进程不运行命令的“echo $cmd”部分。 请帮忙。

【问题讨论】:

  • 我们需要minimal reproducible example“上面的命令保存在一个名为命令的变量中”的部分代码丢失了。
  • 我假设问题是您实际上是通过 bash shell 脚本发送的,而不是要执行的实际命令。但我同意@MartinPrikryl 的观点,即我们需要更多代码/上下文才能提供帮助。
  • 我在这里提到的命令如果我直接在服务器上运行它就可以工作。我理解您的担忧,但相信我在 cmd="here" 行中有一个有效的命令。我也尝试过在 ` ` 而不是 " " 中添加命令。

标签: python server paramiko


【解决方案1】:

先安装paramiko

pip3 install paramiko

然后用你自己的命令试试这段代码:

import paramiko

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
    client.connect(hostname="192.168.1.100", username="user", password="pass")
except:
    exit()

commands = ["pwd", "id", "uname -a", "df -h"]
for command in commands:
    print(command, ":")
    stdin, stdout, stderr = client.exec_command(command)
    print(stdout.read().decode())
    err = stderr.read().decode()
    if err:
        print(err)

【讨论】:

  • 我看不出这如何回答 OP 的问题 “进程未运行命令的“echo $cmd”部分”。 + 请不要在未解释安全后果的情况下建议任何人使用AutoAddPolicy
  • 这并不能解决@MartinPrikryl 提到的运行“echo $cmd”的确切问题。
  • 所以请考虑确认答案,谢谢。 @NakulChawla
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-22
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 2014-08-17
相关资源
最近更新 更多