模擬ssh遠端執行命令

2022-05-07 05:06:07 字數 1326 閱讀 1883

from socket import *

import subprocess

server = socket(af_inet, sock_stream)

server.bind(('127.0.0.1', 8000))

server.listen(5)

print('start...')

while true:

conn, client_addr = server.accept()

while true:

print('from client:', client_addr)

cmd = conn.recv(1024)

if len(cmd) == 0: break

print('cmd:', cmd)

obj = subprocess.popen(cmd.decode('utf8'), # 輸入的cmd命令

shell=true, # 通過shell執行

stderr=subprocess.pipe, # 把錯誤輸出放入管道,以便列印

stdout=subprocess.pipe) # 把正確輸出放入管道,以便列印

stdout = obj.stdout.read() # 列印正確輸出

stderr = obj.stderr.read() # 列印錯誤輸出

conn.send(stdout)

conn.send(stderr)

conn.close()

server.close()

import socket

client = socket.socket(socket.af_inet, socket.sock_stream)

client.connect(('127.0.0.1', 8000))

while true:

data = input('please enter your data')

client.send(data.encode('utf8'))

data = client.recv(1024)

print('from server:', data)

client.close()

輸入dir命令,由於服務端傳送位元組少於1024位元組,客戶端可以接受。

輸入tasklist命令,由於服務端傳送位元組多於1024位元組,客戶端只接受部分資料,並且當你再次輸入dir命令的時候,客戶端會接收dir命令的結果,但是會列印上一次的剩餘未傳送完的資料,這就是粘包問題。

模擬ssh遠端執行命令

目錄python從入門到放棄完整教程目錄 from socket import import subprocess server socket af inet,sock stream server.bind 127.0.0.1 8000 server.listen 5 print start.whi...

ssh遠端執行命令

使用ssh不僅可以登入到遠端的linux主機,還可以執行命令。如果是要登入到遠端linux主機,那麼使用下面的命令 ssh username remoteip example ssh hduser 192.168.0.1 這個將開啟乙個登入到遠端主機192.168.0.1的login shell如果...

ssh遠端執行命令

1.遠端執行普通命令 ssh username ip cmd1 cmd2 多條命令間用分號分割 ssh l username 192.168.1.1等同於 ssh username 192.168.1.1 2.遠端執行需要互動的命令 例如top命令,直接執行ssh username ip top 會...