<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

        python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行命令的示例代碼

        來源:懂視網(wǎng) 責(zé)編:小OO 時(shí)間:2020-11-27 14:22:39
        文檔

        python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行命令的示例代碼

        python中的paramiko模塊是用來實(shí)現(xiàn)ssh連接到遠(yuǎn)程服務(wù)器上的庫,在進(jìn)行連接的時(shí)候,可以用來執(zhí)行命令,也可以用來上傳文件。1、得到一個(gè)連接的對(duì)象。在進(jìn)行連接的時(shí)候,可以使用如下的代碼。
        推薦度:
        導(dǎo)讀python中的paramiko模塊是用來實(shí)現(xiàn)ssh連接到遠(yuǎn)程服務(wù)器上的庫,在進(jìn)行連接的時(shí)候,可以用來執(zhí)行命令,也可以用來上傳文件。1、得到一個(gè)連接的對(duì)象。在進(jìn)行連接的時(shí)候,可以使用如下的代碼。

        下面小編就為大家?guī)硪黄猵ython利用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行命令的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

        python中的paramiko模塊是用來實(shí)現(xiàn)ssh連接到遠(yuǎn)程服務(wù)器上的庫,在進(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ù)器。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行命令的示例代碼

        python中的paramiko模塊是用來實(shí)現(xiàn)ssh連接到遠(yuǎn)程服務(wù)器上的庫,在進(jìn)行連接的時(shí)候,可以用來執(zhí)行命令,也可以用來上傳文件。1、得到一個(gè)連接的對(duì)象。在進(jìn)行連接的時(shí)候,可以使用如下的代碼。
        推薦度:
        標(biāo)簽: 遠(yuǎn)程 使用 連接的
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 午夜免费福利小电影| 中文字幕在线视频免费| 精品久久久久久亚洲中文字幕 | 777亚洲精品乱码久久久久久 | 伊人久久五月丁香综合中文亚洲 | 日本v片免费一区二区三区| 亚洲综合中文字幕无线码| 九九九精品视频免费| 国产91色综合久久免费| 亚洲精品在线免费看| 高清永久免费观看| 亚洲国产美女精品久久久久∴| 你是我的城池营垒免费看| 亚洲国产香蕉碰碰人人| 国产偷窥女洗浴在线观看亚洲 | 亚洲精品国产自在久久| 亚洲精品中文字幕乱码| 精品久久8x国产免费观看| 国产精品亚洲午夜一区二区三区| 99视频在线精品免费观看6| 婷婷亚洲久悠悠色悠在线播放| 成人a毛片视频免费看| 亚洲精品卡2卡3卡4卡5卡区| 最近2019免费中文字幕6| 国产亚洲成av人片在线观看| 国产激情免费视频在线观看| 亚洲熟妇中文字幕五十中出| 免费无码国产V片在线观看| 亚洲午夜国产精品无码老牛影视| 男人j进入女人j内部免费网站 | 亚洲AV无码欧洲AV无码网站| 成人免费观看一区二区| 久久亚洲精品人成综合网| 成人免费午夜无码视频| 亚洲一级毛片视频| 国产成人免费在线| 亚洲AV无码一区二区三区性色 | 亚洲AV综合色区无码一区 | 无码少妇一区二区浪潮免费| 黄页免费视频播放在线播放| 国产一区二区三区在线免费观看|