python soket程式設計之乙個ssh程式

2021-09-03 10:27:18 字數 2160 閱讀 7428

1、在寫這個程式之前我們先來了解一下socket的工作過程:如下圖所示:

一、服務端繫結乙個埠號、並處於監聽狀態。用accept()接收發來的資料請求:

二、客戶端通過位址和埠號連線服務端,並傳送資料請求。

三、服務端收到後,處理請求,併發請求發給客戶端。如何客戶端還在連線請求,那麼就迴圈操作。

四、客戶端處理完資料之後,傳送關閉請求,服務端收到請求後也開始關閉連線。

實驗過程:(直接貼**)

伺服器端**:

#!/usr/bin/python

import socket

import os

import time       #匯入下面要用到的模組

host = ''          #空和4個0表示,監聽所有的位址

port = 11111    #開啟11111埠號,確保這個埠號系統還沒有開啟

s = socket.socket(socket.af_inet,socket.sock_stream)   #指定傳輸的資料型別和結構。一般固定這個

s.bind((host,port))   #繫結上面變數的位址和埠號。

s.listen(2)                        #埠監聽狀態

conn,addr = s.accept()   #定義接收到的連線和addr位址變數

#########-----------------

print 'got client from:',addr   #列印訪問的ip位址和埠有助於排錯

while true:                              #寫乙個迴圈,不寫迴圈資料一次就關閉了

data = conn.recv(4096)     #定義接收到的資料大小

print 'get data',data            #列印接收到的資料名稱(幫助排錯)

if not data:                            

time.sleep(3)       #寫個if判斷接入接收不到語句。那麼列印輸出間隔輸出,不讓花屏

cmd = os.popen(data)   #定義乙個變數cmd把收到的結果,用os.執行,因為我們是ssh客戶端

result=cmd.read()         #把執行結果列印出來並付給變數result

conn.sendall(result)      #把執行結果sendall的方式傳回去

conn.close()

客戶端**:

#/usr/bin/env python

import socket

from time import sleep

h = '192.168.63.129'

p = 111111

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

s.connect((h,p))

while true:

input = raw_input("please input your command:")

if len(input) ==0:

print "your must input your command:"

continue

else:

pass

s.send(input)                                 #把輸入的結果傳給伺服器

received_data = s.recv(1024)        #定義接收的資料

print "received_data from server:\n" ,received_data  #列印接收的資料

sleep(1)

s.close()

先啟動伺服器端,然後看埠是否已經開啟。然後執行客戶端**:效果如下圖所示:

客戶端:

伺服器端:

c DLL程式設計之一

dll的優點 簡單的說,dll有以下幾個優點 1 節省記憶體。同乙個軟體模組,若是以源 的形式重用,則會被編譯到不同的可執行程式中,同時執行這些exe時這些模組的二進位製碼會被重複載入到記憶體中。如果使用dll,則只在記憶體中載入一次,所有使用該dll的程序會共享此塊記憶體 當然,像dll中的全域性...

RAPI程式設計之一

今天剛開始學習rapi程式設計,先將今天學習的成果放出來,大家學習。如果 有問題,請提出,多謝 在pc上使用vc6,好久沒有用它了。一直在evc4下程式設計,呵呵.rapi功能的實現,需要rapi.dll和rapi.h。在以下的實現中,link的動態庫是c windows system32 rapi...

如何學習程式設計之一?

第乙個階段 什麼都不會。不會就先抄你老師給你們寫的例子,不准複製,要乙個字乙個字的敲。放心,其 中肯定會遇到問題,先自己想想問題怎麼解決,能解決就盡量自己解決,不能就 看你老師源 第二個階段 知道大概了。但是要自己寫還是寫不出來,這個時候你要先看你老師 知道大概的思路。然後你以自己的思路開始寫,開始...