如何远程运行python脚本并限制输出

时间:2017-07-31 07:29:09

标签: python shell ssh remote-access spawn

我的服务器中有一个shell脚本,我希望它在raspberry pi中运行python脚本并将结果发送到我的服务器终端。

为此,我尝试使用expect包。这是我的shell脚本。

#!/usr/bin/expect -f

spawn ssh pi@192.168.123.123

expect "password:"
send "pass\r"
interact


sudo python pi@192.168.123.123 TemparatureSensor/Adafruit_Python_DHT/examples/AdafruitDHT.py 11 4

从这里,我可以访问raspberry pi,但不能执行python脚本。

我在这里缺少什么?如何让这个工作?

提前致谢。

1 个答案:

答案 0 :(得分:0)

你想要反过来做。创建一个执行命令(或python脚本)的python脚本,并将输出写入终端。

这是一个这样的python脚本的例子,在我的例子中执行一个命令,调整我的笔记本电脑的声音。

#!/usr/bin/python
import paramiko
import sys

def sshConnect():
    HOST = "ip"
    USER = "user"
    KEYF = "/home/pi/.ssh/id_rsa"
    ssh = paramiko.SSHClient()
    key = paramiko.RSAKey.from_private_key_file(KEYF)
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    print "[*] Connecting..."
    ssh.connect(hostname=HOST, username=USER, pkey=key)
    print "[+] Connected!"
    return ssh

def setVolume(ssh, volume):
    command = 'osascript -e "set Volume %s" ' % (volume)
    print "Executing %s" % (command)
    stdin,stdout,stderr = ssh.exec_command(command)
    print stdout.read() #this prints the result in the terminal
    errors = stderr.read() 
    if errors:
        print errors
    ssh.close()
    print "[+] Disconnected"

def main(volume):
    setVolume(sshConnect(), volume)

if __name__ == "__main__":
    main(sys.argv[1])