亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3148 | 回復(fù): 7
打印 上一主題 下一主題

[求助]subprocess的stdout堵塞問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2017-08-25 11:03 |只看該作者 |倒序瀏覽
要求是這樣的:
1) 登入mysql服務(wù)器(mysql -h localhost -uroot -p1234)。
2) 輸入mysql內(nèi)部命令show databases,如果返回的內(nèi)容出現(xiàn)mysql(存在mysql DB)就立刻強制退出整個python程序。
(關(guān)于要求2的解釋,假如show databases的返回內(nèi)容是information_schema \r\n mysql \r\n test。不要等到test出現(xiàn),馬上就退出或者殺死該程序)

我認為只有用subprocess能夠比較好的完成以上功能,所以以下都是以使用subprocess為前提。

個人試了好多方法,都不成功。
方法1:把stdout放到線程里

  1.     def stdout_theard(p_stdout):
  2.         time.sleep(0.01)
  3.         for i in range(3000):
  4.             print p_stdout.readline()

  5.     s_command = 'mysql -h localhost -uroot -p1234'
  6.     sub_process = subprocess.Popen(command , stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = True)
  7.     thread_read_output = threading.Thread(target=stdout_theard, args=(sub_process.stdout,))
  8.     thread_read_output.setDaemon('True')
  9.     thread_read_output.start()

  10.     sub_process.stdin.write('show databases;\r\n')
復(fù)制代碼

方法2:把stdout重定向到文件里

  1.     s_command = 'mysql -h localhost -uroot -p1234'
  2.     f_out = tempfile.TemporaryFile(mode='w+')
  3.     f_err = tempfile.TemporaryFile(mode='w+')
  4.     sub_process = subprocess.Popen(command , stdin = subprocess.PIPE, stdout = f_out, stderr = f_err, shell = True)
復(fù)制代碼
或者:   
  1. os.dup2(sub_process.stdout.fileno(), f_out.fileno())
復(fù)制代碼

以上方法都沒成功。
希望前輩高手們指點。

論壇徽章:
1
CU十四周年紀念徽章
日期:2015-12-16 18:25:16
2 [報告]
發(fā)表于 2017-08-25 16:57 |只看該作者
我知道怎么解決,但是我就不告訴你

論壇徽章:
33
榮譽會員
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT運維版塊每日發(fā)帖之星
日期:2016-04-17 06:23:27操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-24 06:20:0015-16賽季CBA聯(lián)賽之天津
日期:2016-05-06 12:46:59
3 [報告]
發(fā)表于 2017-08-25 23:29 |只看該作者
回復(fù) 1# ouiki

不知道樓主能否換個思路?

我實在沒搞懂,為啥非要在中間停下來?

我更沒搞懂的是為啥要用shell去執(zhí)行, 而不是直接用 python 的 mysqldb 來執(zhí)行 ?

論壇徽章:
0
4 [報告]
發(fā)表于 2017-08-28 08:18 |只看該作者
本帖最后由 ouiki 于 2017-08-28 08:26 編輯
q1208c 發(fā)表于 2017-08-25 23:29
回復(fù) 1# ouiki

不知道樓主能否換個思路?

我是打了個比方,具體不太好說。
必須得調(diào)用一個exe(Cisco AnyConnect),得到返回值。但登陸這個exe的時候,一旦給定的用戶名密碼錯誤,它會一直用這組錯誤的用戶名密碼試,直到該用戶被鎖死。
退出的原因就是,在第一次用戶名密碼錯誤時,就退出,避免exe反復(fù)試,導(dǎo)致鎖死。
不知道說明白沒。


論壇徽章:
0
5 [報告]
發(fā)表于 2017-08-28 08:21 |只看該作者
423497786 發(fā)表于 2017-08-25 16:57
我知道怎么解決,但是我就不告訴你


論壇徽章:
33
榮譽會員
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT運維版塊每日發(fā)帖之星
日期:2016-04-17 06:23:27操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-24 06:20:0015-16賽季CBA聯(lián)賽之天津
日期:2016-05-06 12:46:59
6 [報告]
發(fā)表于 2017-08-28 20:41 |只看該作者
回復(fù) 4# ouiki

調(diào)用的時候,應(yīng)該可以找到辦法限制它重試的次數(shù)吧?

如果不行, 可能要換個辦法了,subprocess 是有 cache的,
等你看到的時候,那邊的執(zhí)行都結(jié)束了。

或許可以試試 pyexpect 。也許能管用。

論壇徽章:
0
7 [報告]
發(fā)表于 2017-08-29 09:12 |只看該作者
q1208c 發(fā)表于 2017-08-28 20:41
回復(fù) 4# ouiki

調(diào)用的時候,應(yīng)該可以找到辦法限制它重試的次數(shù)吧?

那個exe本身支持的參數(shù)不多,我沒找到限制次數(shù)的參數(shù)。

pyexpect 是個好思路,我試試看。
謝謝回復(fù)。

論壇徽章:
33
榮譽會員
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT運維版塊每日發(fā)帖之星
日期:2016-04-17 06:23:27操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-24 06:20:0015-16賽季CBA聯(lián)賽之天津
日期:2016-05-06 12:46:59
8 [報告]
發(fā)表于 2017-08-29 21:14 |只看該作者
回復(fù) 4# ouiki

我忽然想起來了,你這是要試人家的密碼么?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP