Python 함수는 무언가를 인쇄해야 하지만 아무것도 하지 않습니다.

Python 함수는 무언가를 인쇄해야 하지만 아무것도 하지 않습니다.

저는 Adafruit 16x2 RGB LCD를 사용하여 Raspberry Pi 프로젝트를 위한 작은 스크립트를 작성했습니다.

def KismetScanner():
print 'Kismet Scan'
#clearlogs = subprocess.Popen('rm -r /var/log/kismet; mkdir /var/log/kismet', shell=True, stderr=subprocess.PIPE, stdout=PIPE)
monitormode = subprocess.Popen('service ifplugd stop; ifconfig wlan0 down; iwconfig wlan0 mode monitor; ifconfig wlan0 up', shell=True)
lcd.clear()
lcd.backlight(lcd.YELLOW)
lcd.message("Enabled\nMonitor Mode")
sleep(2)
lcd.clear()
lcd.message("Scanning for\nAccessPoints 60s")
kismetscan = subprocess.Popen('kismet&', shell=True)
sleep(60)
grep1essid = subprocess.Popen('grep -oP "SSID.*>\K.*(?=<)" /var/log/kismet/Kismet-Feb-28-2015-1.xml | sed -n 1p', shell=True, stderr=subprocess.PIPE, stdout=PIPE)
grep1aOut, grep1aErr = grep1essid.communicate()
grep1bssid = subprocess.Popen('grep -oP "SSID.*>\K.*(?=<)" /var/log/kismet/Kismet-Feb-28-2015-1.xml | sed -n 2p', shell=True, stderr=subprocess.PIPE, stdout=PIPE)
grep1bOut, grep1bErr = grep1bssid.communicate()
print grep1aOut
print grep1bOut
lcd.clear()
lcd.backlight(lcd.GREEN)
lcd.message(grep1aOut + '\n' + grep1bOut)
monitormodeoff = subprocess.Popen('ifconfig wlan0 down; iwconfig wlan0 mode managed; ifconfig wlan0 up; service ifplugd start', shell=True)
sleep(2)

스크립트는 Kismet 스캔을 실행하고 처음 발견된 SSID 및 BSSID를 추출하여 LCD에 인쇄합니다. 문제는 grep1aOut과 grep1bOut에 SSID와 BSSID를 저장한 후 올바른 출력을 인쇄하지만 LCD에는 표시하지 않는다는 것입니다. SSID만 있어서 첫줄이 나오는데 왜인지 모르겠네요.

그렇다면 오류는 어디에 있습니까?

답변1

나는 이 grep*Out변수들이 Popen의 stderr/stdout이기 때문에 후행 줄바꿈을 포함할 것이라고 확신합니다... 디스플레이가 두 줄만 인쇄하기 때문에 이를 설명할 것입니다. 이 시도:

msg = grep1aOut.strip() + '\n' + grep1bOut.strip()
lcd.message(msg)

관련 정보