天天看點

在Python3中使用ssh

  在python3中使用密鑰檔案方式的ssh。

<code>#encoding: utf-8</code>

<code>#author: walker</code>

<code>#date: 2017-03-29</code>

<code>#summary: 在python代碼中使用ssh</code>

<code>#Python sys.version 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]</code>

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

<code>class</code> <code>SSHUser(</code><code>object</code><code>):</code>

<code>    </code><code>def</code> <code>__init__(</code><code>self</code><code>, host, port, usr, pwd, pkeyFile, pkeyPwd</code><code>=</code><code>'walker'</code><code>):       </code>

<code>        </code><code>self</code><code>.client </code><code>=</code> <code>paramiko.SSHClient()</code>

<code>        </code><code>key </code><code>=</code> <code>paramiko.RSAKey.from_private_key_file(pkeyFile, password</code><code>=</code><code>pkeyPwd)</code>

<code>        </code><code>self</code><code>.client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) </code><code>#通過公共方式進行認證 (不需要在known_hosts 檔案中存在)</code>

<code>        </code><code>self</code><code>.client.connect(host, port, username</code><code>=</code><code>usr, password</code><code>=</code><code>pwd, pkey</code><code>=</code><code>key)     </code>

<code>    </code> 

<code>    </code><code>def</code> <code>exec_cmd(</code><code>self</code><code>, cmd):</code>

<code>        </code><code>return</code> <code>self</code><code>.client.exec_command(cmd)</code>

<code>    </code><code>def</code> <code>close(</code><code>self</code><code>):</code>

<code>        </code><code>self</code><code>.client.close()</code>

<code>        </code> 

<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>

<code>    </code><code>ssh </code><code>=</code> <code>SSHUser(host</code><code>=</code><code>'192.168.2.3'</code><code>, </code>

<code>                    </code><code>port</code><code>=</code><code>22</code><code>, </code>

<code>                    </code><code>usr</code><code>=</code><code>'walker'</code><code>, </code>

<code>                    </code><code>pwd</code><code>=</code><code>'walker'</code><code>, </code>

<code>                    </code><code>pkeyFile</code><code>=</code><code>r</code><code>'D:\key\id_rsa'</code><code>, </code><code>#密鑰檔案</code>

<code>                    </code><code>pkeyPwd</code><code>=</code><code>'walker'</code><code>)</code>

<code>    </code><code>stdin, stdout, stderr</code><code>=</code><code>ssh.exec_cmd(</code><code>'hostname'</code><code>)  </code>

<code>    </code><code>print</code><code>(stdout.read().decode(</code><code>'utf-8'</code><code>))</code>

<code>    </code><code>stdin, stdout, stderr</code><code>=</code><code>ssh.exec_cmd(</code><code>'ls'</code><code>)  </code>

<code>    </code><code>print</code><code>(stdout.read().decode(</code><code>'utf-8'</code><code>))  </code>

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

相關閱讀:

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

RQSLT