国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python實(shí)現(xiàn)命令行交互

zhangke3016 / 1813人閱讀

摘要:所以就只能使用實(shí)現(xiàn)腳本進(jìn)行交互,和解耦合。使用的庫和代碼由于命令行執(zhí)行之后,進(jìn)程一直在運(yùn)行,不停的出塊,所以我將出塊的內(nèi)容寫入到文件中。

背景:
最近因?yàn)楣ぷ餍枨笤趯懽詣?dòng)化測試腳本,主要目的是測試代碼功能的完整性,然而在使用SSHLibrary庫進(jìn)行遠(yuǎn)程SSH交互的時(shí)候總是出現(xiàn)問題,比如說遇到需要輸入密碼的交互,總是不能成功,還有遇到一直保持運(yùn)行并實(shí)時(shí)輸出的命令,也無法讀取其中的輸出。所以就只能使用python實(shí)現(xiàn)腳本進(jìn)行交互,和SSH解耦合。
使用的庫subprocess和argparse;

代碼1:由于命令行執(zhí)行之后,進(jìn)程一直在運(yùn)行,不停的出塊,所以我將出塊的內(nèi)容寫入到文件中。

import subprocess
import sys
import argparse

class TimeoutError(Exception):
    pass 

def excuteCmd(cmd):
        popen = subprocess.Popen(cmd,stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell = True) 

        while True:
            buff = popen.stdout.readline()
            fh = open("/home/ubuntu/bottos/bottos.txt", "a+")
            fh.write(buff)
            sys.stdout.write(buff)
            if buff == "" and popen.poll() != None:
                break
    

if __name__ == "__main__":
        """ self test """ 
        parser = argparse.ArgumentParser(description="manual to this script")
        parser.add_argument("--delegate", type=str,default=None)
        args = parser.parse_args()
        try: 
            bottos = "/home/ubuntu/bottos/bottos "
            cmd = bottos + "--delegate " + args.delegate + " --enable-wallet"
            ret = excuteCmd(cmd)
            print ret 
        except TimeoutError, e: 
            print repr(e)

代碼2:實(shí)現(xiàn)輸入密碼的功能

import subprocess
import argparse

class TimeoutError(Exception):
    pass 

def excuteCmd(cmd, passwd, timeout = 1):
        s = subprocess.Popen(cmd,stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell = True) 
        s.stdin.write(passwd+"
")
        out, err = s.communicate()
        if err is not None:
            return err
    
        return out
    

if __name__ == "__main__":
        """ self test """ 
        parser = argparse.ArgumentParser(description="manual to this script")
        parser.add_argument("--name", type=str,default=None)
        parser.add_argument("--passwd", type=str,default=None)
        args = parser.parse_args()
        try: 
            unlock = "/home/ubuntu/bottos/bcli wallet unlock "
            cmd = unlock + "--account " + args.name
            ret = excuteCmd(cmd,args.passwd,5)
            print ret 
        except TimeoutError, e: 
            print repr(e)

臨時(shí)解救用的腳本,有幾個(gè)問題

在使用popen.stdout.read()讀取不出來內(nèi)容,只能使用popen.stdout.readline()

在使用stdout.read()stdin.write() communicate()不能同時(shí)使用,原因可能是需要用stdout.readline(),不過我沒有嘗試。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44929.html

相關(guān)文章

  • 收藏 | 10個(gè)可以快速用Python進(jìn)數(shù)據(jù)分析的小技巧

    摘要:函數(shù)將單元格內(nèi)容以形式呈現(xiàn)。自動(dòng)評(píng)論代碼自動(dòng)注釋單元格中的選定行,再次命中組合將取消注釋相同的代碼行。如果需要恢復(fù)整個(gè)已刪除的單元格,請(qǐng)按或撤消刪除單元格。 showImg(https://segmentfault.com/img/remote/1460000019599210); 編譯:小七、蔣寶尚 一些小提示和小技巧可能是非常有用的,特別是在編程領(lǐng)域。有時(shí)候使用一點(diǎn)點(diǎn)黑客技術(shù),既可...

    silvertheo 評(píng)論0 收藏0
  • Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---5、存儲(chǔ)庫的安裝:PyMySQL、PyMongo、RedisPy、R

    摘要:相關(guān)鏈接官方文檔安裝推薦使用安裝,命令如下運(yùn)行完畢之后即可完成的安裝。上一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)數(shù)據(jù)庫的安裝下一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)庫的安裝 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---4、數(shù)據(jù)庫的安裝:MySQL、MongoDB、Redis下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---6、Web庫的安裝:Flask、Tornado 在前面一節(jié)我們介紹了幾個(gè)數(shù)據(jù)庫的安裝方式,但這僅僅是用來存...

    AlanKeene 評(píng)論0 收藏0
  • python入門,編程基礎(chǔ)概念介紹(變量,條件,函數(shù),循環(huán))

    摘要:該系列文章入門,編程基礎(chǔ)概念介紹變量,條件,函數(shù),循環(huán)中的數(shù)據(jù)類型,,,,在中創(chuàng)建對(duì)象學(xué)一門編程語言正在變得越來越容易,只要念過高中甚至是初中小學(xué),能熟練聊和懂得一點(diǎn)點(diǎn)軟件的人,入門一門編程語言都不在話下。 該系列文章: 《python入門,編程基礎(chǔ)概念介紹(變量,條件,函數(shù),循環(huán))》 《python中的數(shù)據(jù)類型(list,tuple,dict,set,None)》 《在python...

    Bryan 評(píng)論0 收藏0
  • python入門

    摘要:零預(yù)備知識(shí)字符編碼計(jì)算機(jī)只能處理數(shù)字,所以為文本需要轉(zhuǎn)化為數(shù)字才能被計(jì)算機(jī)處理,計(jì)算機(jī)里八個(gè)比特作為一個(gè)字節(jié),這是數(shù)據(jù)的存儲(chǔ)基礎(chǔ)單位。 零、預(yù)備知識(shí) 0.1 字符編碼計(jì)算機(jī)只能處理數(shù)字,所以為文本需要轉(zhuǎn)化為數(shù)字才能被計(jì)算機(jī)處理,計(jì)算機(jī)里八個(gè)比特(bit)作為一個(gè)字節(jié)(byte),這是數(shù)據(jù)的存儲(chǔ)基礎(chǔ)單位。計(jì)算機(jī)為了處理文本,有以下三種編碼方式: ASCII碼:只有大小寫英文字母,數(shù)字...

    xeblog 評(píng)論0 收藏0
  • PHP命令下的世界

    摘要:命令行參數(shù)詳解查看的所有命令行參數(shù),使用命令。我們將會(huì)對(duì)大部分常用的命令行參數(shù)進(jìn)行一一解釋,以加深對(duì)能力的認(rèn)識(shí),更加快捷的在服務(wù)端命令行下使用或者調(diào)試各種因?yàn)閷?duì)環(huán)境不熟悉而出現(xiàn)的問題。 PHP作為一門web開發(fā)語言,通常情況下我們都是在Web Server中運(yùn)行PHP,使用瀏覽器訪問,因此很少關(guān)注其命令行操作以及相關(guān)參數(shù)的使用,但是,特別是在類Unix操作系統(tǒng)上,PHP可以作為一門腳本...

    calx 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<