我的服务器中有一个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脚本。
我在这里缺少什么?如何让这个工作?
提前致谢。
答案 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])