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>=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,>=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 && </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 && 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 && </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 && </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,如需轉載請自行聯系原作者