最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python利用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行命令的方法

 更新時(shí)間:2017年10月16日 10:47:43   作者:KEL-1  
下面小編就為大家?guī)硪黄猵ython利用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行命令的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

python中的paramiko模塊是用來實(shí)現(xiàn)ssh連接到遠(yuǎn)程服務(wù)器上的庫(kù),在進(jìn)行連接的時(shí)候,可以用來執(zhí)行命令,也可以用來上傳文件。

1、得到一個(gè)連接的對(duì)象

在進(jìn)行連接的時(shí)候,可以使用如下的代碼:

def connect(host):
  'this is use the paramiko connect the host,return conn'
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  try:
#    ssh.connect(host,username='root',allow_agent=True,look_for_keys=True)
    ssh.connect(host,username='root',password='root',allow_agent=True)
    return ssh
  except:
    return None

在connect函數(shù)中,參數(shù)是一個(gè)主機(jī)的IP地址或者是主機(jī)名稱,在執(zhí)行這個(gè)方法之后,如果成功的連接到服務(wù)器,那么就會(huì)返回一個(gè)sshclient對(duì)象。

第一步是建立一個(gè)SSHClient的對(duì)象,然后設(shè)置ssh客戶端允許連接不在know_host文件中的機(jī)器,然后就嘗試連接服務(wù)器,在連接服務(wù)器的時(shí)候,可以使用兩種方式:一種方式是使用秘鑰的方式,也就是參數(shù)look_for_keys,這里用設(shè)置密碼尋找,也可以直接使用密碼的方式,也就是直接使用參數(shù)password,從而最后返回一個(gè)連接的對(duì)象。

2、 獲取設(shè)置的命令

在進(jìn)行paramiko連接之后,那么必須要得到需要執(zhí)行的命令,如下代碼所示:

def command(args,outpath):
  'this is get the command the args to return the command'
  cmd = '%s %s' % (outpath,args)
  return cmd

在參數(shù)中,一個(gè)是args,一個(gè)outpath,args表示命令的參數(shù),而outpath表示為可執(zhí)行文件的路徑,例如/usr/bin/ls -l。在其中outpath也就是/usr/bin/ls ,而參數(shù)為-l

這個(gè)方法主要是用來組合命令,將分開的參數(shù)作為命令的一部分進(jìn)行組裝。

3、 執(zhí)行命令

在連接過后,可以進(jìn)行直接執(zhí)行命令,那么就有了如下的函數(shù):

def exec_commands(conn,cmd):
  'this is use the conn to excute the cmd and return the results of excute the command'
  stdin,stdout,stderr = conn.exec_command(cmd)
  results=stdout.read()
  return results

在此函數(shù)中,傳入的參數(shù)一個(gè)為連接的對(duì)象conn,一個(gè)為需要執(zhí)行的命令cmd,最后得到執(zhí)行的結(jié)果,也就是stdout.read(),最后返回得到的結(jié)果

4、 上傳文件

在使用連接對(duì)象的時(shí)候,也可以直接進(jìn)行上傳相關(guān)的文件,如下函數(shù):

def copy_moddule(conn,inpath,outpath):
  'this is copy the module to the remote server'
  ftp = conn.open_sftp()
  ftp.put(inpath,outpath)
  ftp.close()
  return outpath

此函數(shù)的主要參數(shù)為,一個(gè)是連接對(duì)象conn,一個(gè)是上傳的文件名稱,一個(gè)上傳之后的文件名稱,在此必須寫入完整的文件名稱包括路徑。

做法主要是打開一個(gè)sftp對(duì)象,然后使用put方法進(jìn)行上傳文件,最后關(guān)閉sftp連接,最后返回一個(gè)上傳的文件名稱的完整路徑

5、 執(zhí)行命令得到結(jié)果

最后就是,執(zhí)行命令,得到返回的結(jié)果,如下代碼:

def excutor(host,outpath,args):
  conn = connect(host)
  if not conn:
    return [host,None]
  exec_commands(conn,'chmod +x %s' % outpath)
  cmd =command(args,outpath)
  result = exec_commands(conn,cmd)
  print '%r' % result
  result = json.loads(result)
  return [host,result]

首先,進(jìn)行連接服務(wù)器,得到一個(gè)連接對(duì)象,如果連接不成功,那么返回主機(jī)名和None,表示沒有連接成功,如果連接成功,那么修改文件的執(zhí)行權(quán)限,從而可以執(zhí)行文件,然后得到執(zhí)行的命令,最后,進(jìn)行執(zhí)行命令,得到結(jié)果,將結(jié)果用json格式表示返回,從而結(jié)果能得到一個(gè)美觀的json格式,最后和主機(jī)名一起返回相關(guān)的信息

6、 測(cè)試代碼

測(cè)試代碼如下:

if __name__ == '__main__':
  print json.dumps(excutor('192.168.1.165','ls',' -l'),indent=4,sort_keys=True)
  print copy_module(connect('192.168.1.165'),'kel.txt','/root/kel.1.txt')
  exec_commands(connect('192.168.1.165'),'chmod +x %s' % '/root/kel.1.txt')

第一步測(cè)試命令執(zhí)行,第二步測(cè)試上傳文件,第三部測(cè)試修改上傳文件的權(quán)限。

完整代碼如下:

#!/usr/bin/env python
import json
import paramiko

def connect(host):
  'this is use the paramiko connect the host,return conn'
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  try:
#    ssh.connect(host,username='root',allow_agent=True,look_for_keys=True)
    ssh.connect(host,username='root',password='root',allow_agent=True)
    return ssh
  except:
    return None

def command(args,outpath):
  'this is get the command the args to return the command'
  cmd = '%s %s' % (outpath,args)
  return cmd

def exec_commands(conn,cmd):
  'this is use the conn to excute the cmd and return the results of excute the command'
  stdin,stdout,stderr = conn.exec_command(cmd)
  results=stdout.read()
  return results

def excutor(host,outpath,args):
  conn = connect(host)
  if not conn:
    return [host,None]
  #exec_commands(conn,'chmod +x %s' % outpath)
  cmd =command(args,outpath)
  result = exec_commands(conn,cmd)
  result = json.dumps(result)
  return [host,result]
def copy_module(conn,inpath,outpath):
    'this is copy the module to the remote server'
    ftp = conn.open_sftp()
    ftp.put(inpath,outpath)
    ftp.close()
    return outpath


if __name__ == '__main__':
    print json.dumps(excutor('192.168.1.165','ls',' -l'),indent=4,sort_keys=True)
    print copy_module(connect('192.168.1.165'),'kel.txt','/root/kel.1.txt')
    exec_commands(connect('192.168.1.165'),'chmod +x %s' % '/root/kel.1.txt')

主要就是使用python中的paramiko模塊通過ssh連接linux服務(wù)器,然后執(zhí)行相關(guān)的命令,并且將文件上傳到服務(wù)器。

以上這篇python利用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行命令的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)OpenCV中文路徑圖片讀寫的詳細(xì)指南

    Python實(shí)現(xiàn)OpenCV中文路徑圖片讀寫的詳細(xì)指南

    在Python中使用OpenCV處理圖片時(shí),涉及讀取和保存圖片的操作,可能會(huì)遇到中文路徑的兼容性問題,該指南的目的是展示如何正確處理帶有中文路徑的圖片,并使用OpenCV將圖片保存到指定的中文路徑,需要的朋友可以參考下
    2025-03-03
  • 一文搞定FastAPI中的查詢參數(shù)

    一文搞定FastAPI中的查詢參數(shù)

    FastAPI中最核心的之一就是路徑參數(shù),所以這篇文章小編主要來和大家介紹一下FastAPI查詢參數(shù)的作用以及基本使用,有需要的小伙伴可以參考下
    2024-03-03
  • Python for循環(huán)通過序列索引迭代過程解析

    Python for循環(huán)通過序列索引迭代過程解析

    這篇文章主要介紹了Python for循環(huán)通過序列索引迭代過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 六種酷炫Python運(yùn)行進(jìn)度條效果的實(shí)現(xiàn)代碼

    六種酷炫Python運(yùn)行進(jìn)度條效果的實(shí)現(xiàn)代碼

    這篇文章主要介紹了六種酷炫Python運(yùn)行進(jìn)度條的實(shí)現(xiàn)代碼,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 使用python將圖片改為灰度圖或黑白圖

    使用python將圖片改為灰度圖或黑白圖

    使用python將圖片改為灰度圖或黑白圖有三種方式,分別是是使用cv2庫(kù)和PIL庫(kù)來實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 你知道怎么改進(jìn)Python 二分法和牛頓迭代法求算術(shù)平方根嗎

    你知道怎么改進(jìn)Python 二分法和牛頓迭代法求算術(shù)平方根嗎

    這篇文章主要介紹了Python編程實(shí)現(xiàn)二分法和牛頓迭代法求平方根代碼的改進(jìn),具有一定參考價(jià)值,需要的朋友可以了解下,希望能夠給你帶來幫助
    2021-08-08
  • 安裝Python和pygame及相應(yīng)的環(huán)境變量配置(圖文教程)

    安裝Python和pygame及相應(yīng)的環(huán)境變量配置(圖文教程)

    下面小編就為大家?guī)硪黄惭bPython和pygame及相應(yīng)的環(huán)境變量配置(圖文教程)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • python小技巧之批量抓取美女圖片

    python小技巧之批量抓取美女圖片

    學(xué)了python以后,知道python的抓取功能其實(shí)是非常強(qiáng)大的,當(dāng)然不能浪費(fèi),呵呵。我平時(shí)很喜歡美女圖,呵呵,程序員很苦悶的,看看美女,養(yǎng)養(yǎng)眼,增加點(diǎn)樂趣。好,那就用python寫一個(gè)美女圖自動(dòng)抓取程序吧~~
    2014-06-06
  • python調(diào)用自定義函數(shù)的實(shí)例操作

    python調(diào)用自定義函數(shù)的實(shí)例操作

    在本文里我們給大家整理了關(guān)于python調(diào)用自定義函數(shù)的實(shí)例操作相關(guān)內(nèi)容,有此需要的朋友們可以學(xué)習(xí)參考下。
    2019-06-06
  • Python?OpenCV實(shí)現(xiàn)圖像增強(qiáng)操作詳解

    Python?OpenCV實(shí)現(xiàn)圖像增強(qiáng)操作詳解

    由于很多不確定因素,導(dǎo)致圖像采集的光環(huán)境極其復(fù)雜;為了提高目標(biāo)檢測(cè)模型的泛化能力,本文將使用python中的opencv模塊實(shí)現(xiàn)常見的圖像增強(qiáng)方法,感興趣的可以了解一下
    2022-10-10

最新評(píng)論

泸定县| 恩平市| 讷河市| 陇西县| 龙江县| 永嘉县| 孝昌县| 舟曲县| 临猗县| 平利县| 安化县| 龙山县| 扶余县| 泽普县| 清水县| 民丰县| 普宁市| 塔城市| 阜康市| 寿宁县| 武威市| 临清市| 牡丹江市| 夏津县| 阿克陶县| 驻马店市| 开封市| 尼玛县| 崇礼县| 太康县| 福贡县| 富锦市| 五家渠市| 东山县| 吉木乃县| 东丰县| 平和县| 文登市| 汽车| 林西县| 乐平市|