初めまして。
シェルスクリプトから指定したネットワークインターフェイスを表示できるプログラムを書いています。
形としては、シェルスクリプトからpythonで作ったプログラムを起動し、その対話をexcept文を使って自動化、という感じになります。
回りくどいですが、、、
恐らく実行は出来ているのですが、そのpythonの実行結果を出力する方法がわかりません。
ソースコードは下記のような感じです。
ソースコード
samplepy
1import subprocess 2 3print "Your Interface" 4 5interface = raw_input() 6print(interface+" is selected") 7 8cmd = "arp-scan -I {} -l".format(interface) 9try: 10 subprocess.call(cmd.split()) 11except: 12 print "error:Selected NetworkInterface is not exist!" 13
SearchAddress
1#! /bin/bash 2echo -n INPUT_INTERFACE: 3 4read -a INTERFACE -p "" 5 6expect -c " 7 8 spawn python sample.py 9 10 expect \"Your Interface\" 11 send \"${INTERFACE[0]}\" 12" 13 14echo ${INTERFACE[0]} //ちゃんと入っているか確認のため入れています 15
そしてSearchAddressを実行すると、
実行結果
[user@host folder]# SearchAddress
INPUT_INTERFACE:xxx // 文字入力
spawn python sample.py //ここから自動で進みます
Your Interface
xxx
上記のように、処理を入力したところまでしか表示されません。
その結果を書き出すことは難しいでしょうか?
ちなみに、sample.pyを直接実行した場合は以下のようになります。
###sample.pyの結果
[root@CentOSServer tompkin]# python sample.py
Your Interface
hogehoge //文字列入力
hogehoge is selected
Interface: hogehoge, datalink type: xxx
Starting arp-scan 1.9.5 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.xx.x xx:xx:xx:xx:xx:xx example ,INC.
よろしくお願いします。