我正在使用ssh登录并使用vi开发的远程服务器上进行开发。但是我需要将终端通知命令osascript -e "display notification {} {} {}"
和这些命令发送回我的本地终端,这样我就可以在我的系统上收到声音/ mac通知。我如何实现这一目标?
我知道我可以使用import os; os.sytem('command')
服务器上的脚本在其运行的机器上发送终端命令,即服务器本身,但有没有类似的命令将命令发送回我的本地?理想情况下,我需要从脚本本身完成此操作 - 因为我有多个触发器可以完成通知。
答案 0 :(得分:0)
您需要使用一些套接字
在您的服务器计算机上,您需要以下内容:
import socket
IP = "0.0.0.0" # Your Local Machine IP
PORT = 5200 # Your Local Machine Listening Port
def send_message(msg):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((IP, PORT))
s.send(bytes(msg, 'UTF-8'))
data = s.recv(4096)
s.close()
print(data)
您可以在任何需要的地方使用该方法,唯一的参数是msg,只需要发送到本地计算机的命令
在本地计算机上,此脚本应该满足您的需求:
import socket
import os
IP = "0.0.0.0" # 0.0.0.0 Means every available IP to assign, but you need to use your external IP on the script that u will use on server
PORT = 5200 # The port you want to listen on
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((IP, PORT))
s.listen(1)
while True:
conn, addr = s.accept()
print("Command from {}".format(addr))
data = conn.recv(4096)
if not data: continue
if data == b'stop': break # This line just defines a word that will make your local machine stop listening.
print(data)
command = data.decode('UTF-8')
os.system(command)
conn.send(data)
conn.close()
您需要先运行本地计算机脚本