SSH | Python ssh遠程服務器的簡單使用

人人可以學Python.jpg

Python ssh模塊

python有很多第三方的SSh模塊,我們也可以使用python自帶的ssh模塊,進行一些常用的操作

Code: 1. 文件上傳,下載,命令執行

#!/usr/bin/env python
# -*-coding:utf-8-*-
import ssh

__author__ = "Allen Woo"

def connect_host(ip, port, username, password):
    '''
    連接遠程主機
    '''
    client = ssh.SSHClient()
    client.set_missing_host_key_policy(ssh.AutoAddPolicy())
    try:
        client.connect(ip, port = port,
                       username = username,
                       password = password)
    except Exception,e:
        print e
        return False
    return client

# 連接遠程服務器
client = connect_host(192.168.1.111,  22,  "test",  "123456")
# 文件下載
sftp = client.open_sftp()
remote_file = "/home/work/test.txt"
local_save_path = "/home/work/temp_file/text.txt"

sftp.get(remote_file, local_save_path)

# 文件上傳差不多
remote_save_path = "/home/work/upload/test.txt"
local_file = "/home/work/text.txt"
sftp.put(local_file, remote_save_path)

# 命令執行
stdin, stdout, stderr = client.exec_command("ls -l ")
r = stdout.read()
print(r)

Code: 2. 獲取遠程服務器的目錄list

def sftp_walkdir(sftp, path):
    '''
    遞歸獲取path下的所有文件與目錄
    :param sftp: python ssh sftp object
    :param path:
    :return:
    '''
    now_dirname = os.path.split(path)[-1]
    backups = []
    files = sftp.listdir_attr(path)
    for f in files:
        tpath = "{}/{}".format(path, f.filename)
        if f.longname[0] == "d":

            r = sftp_walkdir(sftp, tpath)
            backups.append(r)
        else:
            backups.append({"filename":f.filename, "_path_":tpath})

    return {now_dirname:backups, "_path_":path}

# 測試下
# 連接遠程服務器
client = connect_host(192.168.1.111,  22,  "test",  "123456")
r = sftp_walkdir(sftp, "/home/work/sshtest")
print(json.dumps(r, sort_keys=True, indent=2))

看下Code2 目錄list的結果

{
  "_path_": "/home/work/sshtest", 
  "sshtest": [
    {
      "_path_": "/home/work/sshtest/test2.txt", 
      "filename": "test2.txt"
    }, 
    {
      "_path_": "/home/work/sshtest/test1.txt", 
      "filename": "test1.txt"
    }, 
    {
      "_path_": "/home/work/sshtest/sshtest_222", 
      "sshtest_222": [
        {
          "_path_": "/home/work/sshtest/sshtest_222/test_lalalal.txt", 
          "filename": "test_lalalal.txt"
        }, 
        {
          "_path_": "/home/work/sshtest/sshtest_222/sshtest_333_222", 
          "sshtest_333_222": [
            {
              "_path_": "/home/work/sshtest/sshtest_222/sshtest_333_222/test_ooooo.txt", 
              "filename": "test_ooooo.txt"
            }
          ]
        }, 
        {
          "_path_": "/home/work/sshtest/sshtest_222/sshtest_333", 
          "sshtest_333": []
        }, 
        {
          "_path_": "/home/work/sshtest/sshtest_222/test_hahahah.txt", 
          "filename": "test_hahahah.txt"
        }
      ]
    }
  ]
}

還有其他功能,可以直接看文檔或者查看源碼, 就先這樣吧

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,916評論 25 708
  • GitHub 上有一個 Awesome - XXX 系列的資源整理,資源非常豐富,涉及面非常廣。awesome-p...
    若與閱讀 18,704評論 4 418
  • 哈嘍,大家好,我是瘦身達人妞妞,很高興今天為大家帶來史上最懶減肥密詔一,懂的人都瘦了喔 踮腳走路的好處 野菜溫馨提...
    快樂瘦瘦方閱讀 362評論 0 0
  • 各位領導大家好,我是 年級的 這是我們的手工制作教室,一進到這里,您是否感受到了濃濃的傳統文化的氣息呢?我們的手...
    清淺光陰閱讀 15,648評論 0 0
  • 這個周又是一輪無情的碾軋,經歷的所有面試,無果。如果身邊還有姐妹們向我咨詢想轉行,我一定會讓她們慎重的考慮一下,再...
    Sophia的博客閱讀 248評論 0 0