天天看點

paramiko安裝及使用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

<code>我的部落格已遷移到xdoujiang.com請去那邊和我交流</code>

<code>一、基礎環境</code>

<code>1、角色、ip、版本、核心</code>

<code>serverA 10.1.10.117 3.2.0-4-amd64 7.8 python pycrypto paramiko ecdsa</code>

<code>python-2.7.3</code>

<code>pycrypto-2.6.1</code>

<code>paramiko-1.15.3</code>

<code>pycrypto-2.6.1.</code><code>tar</code><code>.gz</code>

<code>ecdsa-0.13.</code><code>tar</code><code>.gz</code>

<code>paramiko-1.15.3.</code><code>tar</code><code>.gz</code>

<code>二、apt方式安裝paramiko</code>

<code>1、安裝基礎包</code>

<code>apt-get -y </code><code>install</code> <code>gcc python-dev python-setuptools</code>

<code>2、安裝pip指令</code>

<code>easy_install pip</code>

<code>3、查詢下是否有安裝的包</code>

<code>1)pip search </code><code>"pycrypto"</code>

<code>pycrypto             - Cryptographic modules </code><code>for</code> <code>Python.</code>

<code>2)pip search </code><code>"paramiko"</code>

<code>paramiko             - SSH2 protocol library</code>

<code>4、使用pip方式安裝</code>

<code>1)pip </code><code>install</code> <code>pycrypto</code>

<code>Collecting pycrypto</code>

<code>/usr/local/lib/python2</code><code>.7</code><code>/dist-packages/pip-7</code><code>.1.2-py2.7.egg</code><code>/pip/_vendor/requests/packages/urllib3/util/ssl_</code><code>.py:90: InsecurePlatformWarning: A </code><code>true</code> <code>SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For </code><code>more</code> <code>information, see https:</code><code>//urllib3</code><code>.readthedocs.org</code><code>/en/latest/security</code><code>.html</code><code>#insecureplatformwarning.</code>

<code>  </code><code>InsecurePlatformWarning</code>

<code>  </code><code>Downloading pycrypto-2.6.1.</code><code>tar</code><code>.gz (446kB)</code>

<code>    </code><code>100% |████████████████████████████████| 446kB 96kB</code><code>/s</code> 

<code>Installing collected packages: pycrypto</code>

<code>  </code><code>Running setup.py </code><code>install</code> <code>for</code> <code>pycrypto</code>

<code>Successfully installed pycrypto-2.6.1</code>

<code>2)pip </code><code>install</code> <code>paramiko</code>

<code>Collecting paramiko</code>

<code>  </code><code>Downloading paramiko-1.15.3-py2.py3-none-any.whl (166kB)</code>

<code>    </code><code>100% |████████████████████████████████| 167kB 104kB</code><code>/s</code> 

<code>Collecting ecdsa&gt;=0.11 (from paramiko)</code>

<code>  </code><code>Downloading ecdsa-0.13-py2.py3-none-any.whl (86kB)</code>

<code>    </code><code>100% |████████████████████████████████| 90kB 165kB</code><code>/s</code> 

<code>Requirement already satisfied (use --upgrade to upgrade): pycrypto!=2.4,&gt;=2.1 </code><code>in</code> <code>/usr/local/lib/python2</code><code>.7</code><code>/dist-packages</code> <code>(from paramiko)</code>

<code>Installing collected packages: ecdsa, paramiko</code>

<code>Successfully installed ecdsa-0.13 paramiko-1.15.3</code>

<code>三、測試</code>

<a href="http://s3.51cto.com/wyfs02/M00/74/71/wKiom1Ydn_zzwLWJAADgZiDp0Uc129.jpg" target="_blank"></a>

<code>四、</code><code>tar</code><code>包安裝paramiko</code>

<code>apt-get -y </code><code>install</code> <code>gcc python-dev</code>

<code>2、下載下傳pycrypto</code>

<code>wget --no-check-certificate https:</code><code>//pypi</code><code>.python.org</code><code>/packages/source/p/pycrypto/pycrypto-2</code><code>.6.1.</code><code>tar</code><code>.gz</code><code>#md5=55a61a054aa66812daf5161a0d5d7eda</code>

<code>3、解壓并進入相關目錄</code>

<code>tar</code> <code>zxvf pycrypto-2.6.1.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>pycrypto-2.6.1 </code>

<code>4、檢查環境</code>

<code>.</code><code>/configure</code>

<code>5、編譯安裝</code>

<code>python setup.py build &amp;&amp; python setup.py </code><code>install</code>

<code>6、下載下傳ecdsa</code>

<code>wget --no-check-certificate https:</code><code>//pypi</code><code>.python.org</code><code>/packages/source/e/ecdsa/ecdsa-0</code><code>.13.</code><code>tar</code><code>.gz</code><code>#md5=1f60eda9cb5c46722856db41a3ae6670</code>

<code>7、解壓并進入相關目錄</code>

<code>tar</code> <code>zxvf ecdsa-0.13.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>ecdsa-0.13</code>

<code>8、編譯安裝</code>

<code>9、下載下傳paramiko</code>

<code>wget --no-check-certificate https:</code><code>//pypi</code><code>.python.org</code><code>/packages/source/p/paramiko/paramiko-1</code><code>.15.3.</code><code>tar</code><code>.gz</code><code>#md5=c959088669f8d951585aa6abc25c8ef6</code>

<code>10、解壓并進入相關目錄</code>

<code>tar</code> <code>zxvf paramiko-1.15.3.</code><code>tar</code><code>.gz &amp;&amp; </code><code>cd</code> <code>paramiko-1.15.3</code>

<code>11、</code>

<a href="http://s3.51cto.com/wyfs02/M01/74/71/wKiom1YdoBmj0yevAAGXRqhE6Bw461.jpg" target="_blank"></a>

<code>12、編譯安裝</code>

<code>五、測試</code>

<a href="http://s3.51cto.com/wyfs02/M01/74/6D/wKioL1YdoEeSr9imAAD3_GV-09o128.jpg" target="_blank"></a>

51

52

53

54

55

56

57

58

59

60

61

62

63

<code>六、使用paramiko子產品(eg:多台伺服器查詢)</code>

<code>#!/usr/bin/python2.7</code>

<code># -*- coding: utf-8 -*-</code>

<code>#--------------------------------------------------</code>

<code>#Author:jimmygong</code>

<code>#Email:[email protected]</code>

<code>#FileName:paramiko.py</code>

<code>#Function: </code>

<code>#Version:1.0 </code>

<code>#Created:2015-10-13</code>

<code>import</code> <code>re</code>

<code>import</code> <code>fileinput</code>

<code>import</code> <code>os</code>

<code>import</code> <code>sys</code>

<code>import</code> <code>paramiko</code>

<code>host=</code><code>"host.txt"</code>

<code>cmd=</code><code>"cmd.txt"</code>

<code>if</code> <code>os.path.isfile(host) and os.path.isfile(cmd):</code>

<code>    </code><code>print </code><code>"%s and %s exists,you can continue"</code> <code>% (host,cmd)</code>

<code>else</code><code>:</code>

<code>    </code><code>print </code><code>"%s or %s is lost,please check!"</code> <code>% (host,cmd)</code>

<code>    </code><code>sys.</code><code>exit</code><code>()</code>

<code>port=22</code>

<code>user=</code><code>"root"</code>

<code>password=</code><code>"redhat"</code>

<code>i=0</code>

<code>cmd1=</code><code>"cat %s|grep '10.1'|wc -l"</code> <code>% host</code>

<code>num1=os.popen(cmd1).</code><code>read</code><code>().strip()</code>

<code>s=paramiko.SSHClient()</code>

<code>s.load_system_host_keys()</code>

<code>s.set_missing_host_key_policy(paramiko.AutoAddPolicy())</code>

<code>for</code> <code>line </code><code>in</code> <code>fileinput.input(host,inplace=0):</code>

<code>    </code><code>if</code> <code>re.search(</code><code>"10.1"</code><code>,line):</code>

<code>        </code><code>i+=1</code>

<code>        </code><code>host=line.strip()</code>

<code>        </code><code>t=paramiko.Transport((host,port))</code>

<code>        </code><code>t.connect(username=user,password=password)</code>

<code>        </code><code>s.connect(host,port,user,password,timeout=5)</code>

<code>        </code><code>f=</code><code>open</code><code>(cmd)</code>

<code>        </code><code>while</code> <code>True:</code>

<code>              </code><code>cmd_line=f.readline()</code>

<code>              </code><code>if</code> <code>len(cmd_line) == 0:</code><code>break</code>

<code>              </code><code>stdin,stdout,stderr=s.exec_command(cmd_line)</code>

<code>              </code><code>cmd_result=stdout.</code><code>read</code><code>(),stderr.</code><code>read</code><code>()</code>

<code>              </code><code>for</code> <code>result </code><code>in</code> <code>cmd_result:</code>

<code>                  </code><code>print </code><code>"\033[32m %s \033[0m\n"</code> <code>% result,</code>

<code>        </code><code>f.close()</code>

<code>        </code><code>print </code><code>"\x1B[0;33m %d/%d %s\x1B[0m"</code> <code>% (int(i),int(num1),line)</code>

<code>        </code><code>m=i</code>

<code>    </code><code>else</code><code>:</code>

<code>            </code><code>pass</code>

<code>print </code><code>"\033[32m allnum %d \033[0m\n"</code> <code>% int(m)</code>

<code>print </code><code>"#"</code><code>*40</code>

<code>s.close()</code>

<code>PS:相關檔案</code>

<code>cat</code> <code>cmd.txt </code>

<code>crontab</code> <code>-l</code>

<code>cat</code> <code>host.txt </code>

<code>10.1.10.185</code>

<code>10.1.10.24</code>

<code>七、效果</code>

<a href="http://s3.51cto.com/wyfs02/M02/74/71/wKiom1YdoDzQHYgrAAEfXHS7hnY530.jpg" target="_blank"></a>

<code>八、參考文章</code>

<code>https:</code><code>//pypi</code><code>.python.org</code><code>/pypi/pycrypto</code>

<code>https:</code><code>//pypi</code><code>.python.org</code><code>/pypi/paramiko</code>

<code>https:</code><code>//pypi</code><code>.python.org</code><code>/pypi/ecdsa/</code>

<code>https:</code><code>//github</code><code>.com</code><code>/paramiko/paramiko/</code>

<code>http:</code><code>//docs</code><code>.paramiko.org</code><code>/en/1</code><code>.15</code><code>/api/agent</code><code>.html</code>

本文轉自 xdoujiang 51CTO部落格,原文連結:http://blog.51cto.com/7938217/1702704,如需轉載請自行聯系原作者