玩轉網路 簡單模擬SSH實現遠端控制 2

2021-08-31 23:05:36 字數 3132 閱讀 2835

簡單學習os庫

學習筆記適用於python2,如果python3則需要另按裝環境和模組,及修改一些語法

os常用函式

system(cmd)

#要執行系統或者程式、指令碼

popen()

#返回乙個檔案描述符號為fd的開啟的檔案物件

chdir()

#改變當前工作目錄

listdir()

#列出目錄下的檔案(引數是目錄的絕對路徑)

getcwd()

#獲取當前目錄

remove()

#刪除

使用者執行系統命令

#coding:utf-8

from os import *

#匯入os模組

cmd = raw_input("please input a command:")

#python3則是input()

system(cmd)

#要執行系統或者程式、指令碼

print "it's ok"

使用system檢視目錄

#coding:utf-8

from os import *

system('dir')

#結果返回值只是乙個0

#0表示執行成功,-1則是呼叫成功執行失敗

所以我們要使用popen進行呼叫

#coding:utf-8

from os import *

a = popen('dir')

#返回乙個檔案描述符號為fd的開啟的檔案物件

print('a')

#則返回#只需要print a.read()進行讀取執行結果

如果我們使用for迴圈輸出當前路徑下的檔案

#coding:utf-8

from os import *

#匯入模組

a=listdir(getcwd())

#a賦值當前路徑下的檔案

print '\nthere is ',getcwd(),'\n'

#列印輸出當前路徑

for i in a

print 『 --- 』,i

#listdir返回的是乙個列表,所有要用for迴圈輸出

#輸出   --- icliemt.py

--- iserver.py

--- osdemo.py

--- test

進入當前目錄的其他檔案

#coding:utf-8

from os import *

#匯入模組

print getcwd()

#檢視當前路徑

#則顯示c:\\user\\administrator

#如果要進入其他目錄還要加\\號

chdir(getcwd()+『\\test』)

#進入當前目錄的test目錄

system(test.py)

刪除檔案

from os import *

remove('1.txt')

#刪除當前檔案的1.txt

print "執行前."

for i in listdir(getcwd()):

print i

remove('1.txt')

print 「執行後」

for i in listdir(getcwd()):

print i

#執行前顯示

#1.txt

#iclient.pt

#執行後顯示

#iclient.py

我們有了一點os標準庫的知識,就可以來簡單實現模擬ssh了

實現簡單模擬ssh

先來編寫sshserver

#coding:utf-8

from socket import *

from os import *

#匯入兩個模組

s=socket(af_inet,sock_stream)

#建立套接字

s.bind(('',6666))

#socket到本機位址和6666埠

s.listen(1)

#最大只允許乙個客戶端連線

while true:

#迴圈 sock,addr = s.accept()

#等待客戶端連線請求出現,接受請求之後會返回

#返回兩次

#sock=第一次返回的是我們操作的socket

#addr=第二次返回的是連線那台機器的ip位址和埠號

if cmd == ''quit": #如果收到的cmd命令是quit則退出迴圈

sock.close()

break

result = popen(cmd).read() #將發去給客戶端的命令,取得到的結果賦值給result

sock.send(result) ##傳送得到結果給客戶端

sshclient

#coding:utf-8

from socket import *

#匯入模組

c = socket(af_inet,sock_stream)

#套接字

c.connect(('127.0.0.1',6666))

#連線本機埠

while true:

cmd = raw_input('cmd ?')

#raw_input在python3中是input

c.send(cmd)

#傳送命令給服務端

if cmd == 'exit';

c.close()

break

#如果收到的cmd命令是quit則退出迴圈

data = c.recv(1024)

#將獲得的資料賦值給data

print data

#輸出資料

c.close()

一些思考筆記來自:

i春秋暴走python

玩轉「網路上的芳鄰」之網路配置 一

在前面的兩篇中,我們分析了與 windows 系統 網路上的芳鄰 相關的 名稱註冊 和 名稱解析 工作原理,相信各位對微軟不同時期的 windows 網路上的芳鄰工作原理已有了比較深的了解。本篇要繼續向大家介紹,在各種網路環境中,各 windows 系統該如何配置,才能使網路中的所有 windows...

Socket簡單實現ssh筆記

socket本質上就是在2臺網路互通的電腦之間,架設乙個通道,兩台電腦通過這個通道來實現資料的互相傳遞。我們知道網路 通訊 都 是基於 ip port 方能定位到目標的具體機器上的具體服務,作業系統有0 65535個埠,每個埠都可以獨立對外提供服務,如果 把乙個公司比做一台電腦 那公司的總機號碼就相...

python socket簡單實現SSH伺服器端

server import socket,os server socket.socket server.bind localhost 9999 server.listen while true conn,addr server.accept while true data conn.recv 102...