1.获取百度返回信息
<code>import</code> <code>socket</code>
<code>host </code><code>=</code> <code>"www.baidu.com"</code>
<code>port </code><code>=</code> <code>80</code>
<code>ip </code><code>=</code> <code>socket.gethostname(host) </code><code>#获取访问百度的时候解析出来的IP地址。(vip)</code>
<code>print</code> <code>(</code><code>"connect server ip = {0}"</code><code>.</code><code>format</code><code>(ip))</code>
<code>s </code><code>=</code> <code>socket.socket(socket.AF_INET, socket.SOCK_STREAM)</code>
<code>s.connect((ip, port))</code>
<code>#s.sendall(" ") #python2在sendall()中必须是字符串(str)形式 ,此处不用这种形式。</code>
<code>s.sendall(</code><code>"GET / HTTP/1.1 \r\nHost:www.baidu.com\r\n\r\n"</code><code>.encode(</code><code>"utf-8"</code><code>)) </code><code>#python3在sendall()中必须是字节(beat)形式</code>
<code>##在制定的http层次的协议上,百度有自己的规定,如果发过去的字符串不符合规定,百度是不会返回信息的,要符合对方的规则。</code>
<code>data </code><code>=</code> <code>s.recv(</code><code>2048</code><code>) </code><code>#接收数据</code>
<code>print</code> <code>(data)</code>
2.socket实现ssh连接终端
客户端:
<code>import</code> <code>time</code>
<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>"__main__"</code><code>:</code>
<code> </code><code>host </code><code>=</code> <code>"192.168.0.103"</code>
<code> </code><code>port </code><code>=</code> <code>12345</code>
<code> </code><code>s </code><code>=</code> <code>socket.socket(socket.AF_INET, socket.SOCK_STREAM)</code>
<code> </code><code>s.connect((host, port))</code>
<code> </code><code>stat </code><code>=</code> <code>1</code>
<code> </code><code>while</code> <code>1</code><code>:</code>
<code> </code><code>cmd </code><code>=</code> <code>raw_input</code><code>(</code><code>"{0} >>> "</code><code>.</code><code>format</code><code>(host))</code>
<code> </code><code>if</code> <code>cmd.lower() </code><code>=</code><code>=</code> <code>"exit"</code><code>:</code>
<code> </code><code>exit()</code>
<code> </code><code>if</code> <code>not</code> <code>cmd:</code>
<code> </code><code>continue</code>
<code> </code><code>s.sendall(cmd)</code>
<code> </code><code>data </code><code>=</code> <code>s.recv(</code><code>2048</code><code>)</code>
<code> </code><code>if</code> <code>len</code><code>(data) > </code><code>0</code><code>:</code>
<code> </code><code>stat </code><code>=</code> <code>1</code>
<code> </code><code>print</code> <code>(</code><code>"{0}"</code><code>.</code><code>format</code><code>(data))</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>stat </code><code>+</code><code>=</code> <code>1</code>
<code> </code><code>time.sleep(</code><code>1</code><code>)</code>
<code> </code><code>if</code> <code>stat </code><code>=</code><code>=</code> <code>5</code><code>:</code>
<code> </code><code>break</code>
服务端:
<code>import</code> <code>commands</code>
<code>host </code><code>=</code> <code>"192.168.0.103"</code>
<code>port </code><code>=</code> <code>12345</code>
<code>print</code> <code>(</code><code>"server host = {0} port = {1}"</code><code>.</code><code>format</code><code>(host, port))</code>
<code>s.bind((host, port))</code>
<code>s.listen(</code><code>6</code><code>)</code>
<code>conn, addrclient </code><code>=</code> <code>s.accept()</code>
<code>print</code> <code>(</code><code>"connect from {0}"</code><code>.</code><code>format</code><code>(addrclient))</code>
<code>stat </code><code>=</code> <code>1</code>
<code>while</code> <code>1</code><code>:</code>
<code> </code><code>cmd </code><code>=</code> <code>conn.recv(</code><code>2048</code><code>)</code>
<code> </code><code>if</code> <code>len</code><code>(cmd) > </code><code>0</code><code>:</code>
<code> </code><code>stat </code><code>=</code> <code>1</code>
<code> </code><code>status, output </code><code>=</code> <code>commands.getstatusoutput(cmd)</code>
<code> </code><code>conn.sendall(output)</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>stat </code><code>+</code><code>=</code> <code>1</code>
<code> </code><code>time.sleep(</code><code>1</code><code>)</code>
<code> </code><code>if</code> <code>stat </code><code>=</code><code>=</code> <code>5</code><code>:</code>
<code> </code><code>break</code>
这个脚本还欠缺很多功能,也存在不少bug,还待后期去完善和修复,待续ing...
3.专门用来SSH的模块
在python模块里面专门用来ssh连接的模块:paramiko
用网页就可以连接上服务端,基于ssh协议,不需要写服务端
是一个ssh版的客户端
安装paramiko
# pip install paramiko
创建连接脚本:
vim para.py #注意名字不能用paramiko.py,不然脚本执行过程中会有问题。
<code>import</code> <code>paramiko</code>
<code>client </code><code>=</code> <code>paramiko.SSHClient()</code>
<code>client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) </code><code>#用来设置know-host</code>
<code>client.connect(hostname</code><code>=</code><code>"192.168.0.103"</code><code>, port</code><code>=</code><code>22</code><code>, username</code><code>=</code><code>"root"</code><code>, password</code><code>=</code><code>"1q2w3e"</code><code>)</code>
<code> </code><code>cmd </code><code>=</code> <code>raw_input</code><code>(</code><code>"{0}>> "</code><code>.</code><code>format</code><code>(</code><code>'192.168.0.103'</code><code>))</code>
<code> </code><code>if</code> <code>cmd:</code>
<code> </code><code>stdin, stdout, stderr </code><code>=</code> <code>client.exec_command(cmd)</code>
<code> </code><code>for</code> <code>std </code><code>in</code> <code>stdout.readlines():</code>
<code> </code><code>print</code> <code>(std)</code>
执行即可连接服务器。
本文转自 听丶飞鸟说 51CTO博客,原文链接:http://blog.51cto.com/286577399/2057229