【问题标题】:Run a script on remote host and see output在远程主机上运行脚本并查看输出
【发布时间】:2016-06-14 03:34:20
【问题描述】:

在服务器上我就是这样运行的:

root@web:~# /var/www/PHP/controller.py | cut -f 4 -d ','
    nan
    nan
    nan

来自外部机器的 Paramiko 脚本:

 #!/usr/bin/python
    for i in range (0,10000):
            ssh = paramiko.SSHClient()
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            ssh.connect('192.168.122.100',username='user',password='lol')
            stdin,stdout,stedrr = ssh.exec_command("/var/www/PHP/controller.py | cut -f 4 -d ','")
            print stdout.read()

但输出为空。有谁知道可能出了什么问题?

【问题讨论】:

  • 为什么要在问题上加上“python”标签?似乎是关于一些“Paramiko”工具,与 Python 无关。
  • @TheGodfather:因为 paramiko 工具是用 Python 编写的。也许他用错了。懂 Python 的人或许能告诉他。
  • 1) 尽量让你的程序更简单更简单。我首先将paramikocontroller.py 隔离开来。试试stdin,stdout,stedrr = ssh.exec_command("echo a,b,c,d,e,f,g | cut -f 4 -d ','")。那仍然打印空输出吗? 2) 试试print steddrr.read()。那里有线索吗?
  • 谢谢@Robᵩ。是的,它打印出'd'。但我不确定为什么它不运行脚本并打印输出。
  • /var/www/PHP/controller.py 对用户user 有执行权限吗?如果不尝试python /var/www/PHP/controller.py ...

标签: python linux python-2.7 paramiko


【解决方案1】:

与 cmets 中的建议相同,每当您遇到困难并且 stdout 没有提供任何信息时,请查看 stderr

可能是机器用户没有足够的权限访问它,或者其他什么问题...

尝试使用 paramiko 仅运行 controller.py 脚本,看看在 stdout、stderr 中会发生什么。当你做到了,然后继续削减

顺便说一下密码选择+1

【讨论】:

  • 检查外部机器用户是否有/tmp/serviceLevel.tmp的权限,如果没有给它权限再运行一次
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多