Лучше создать функцию, которая отправляет информацию на ваше устройство.Кроме того, вам нужно создать функцию get_cmd(interface)
, чтобы получить IP-адрес для данного интерфейса.Вы запрашиваете один и тот же cmd
дважды, и я полагаю, вы получаете информацию только для одного интерфейса.
import time
import sys
import Adafruit_CharLCD as LCD
from Adafruit_CharLCD import Adafruit_CharLCD
from subprocess import Popen, PIPE
from time import sleep, strftime
from datetime import datetime
cmd = "ip -4 addr show {interface} | grep inet | awk '{{print $2}}' | cut -d/ -f1"
def run_cmd(cmd):
p = Popen(cmd, shell=True, stdout=PIPE)
output = p.communicate()[0]
return output
def get_cmd(interface):
return cmd.format(interface=interface)
def lcd_show(lcd, interface):
cmd = get_cmd(interface)
ipaddr = run_cmd(cmd)
lcd.clear()
lcd.message(interface)
time.sleep(2)
lcd.clear()
lcd.message(datetime.now().strftime('%b %d %H:%M:%S\n'))
lcd.message('IP %s' % (ipaddr))
time.sleep(2)
lcd_rs = 25
lcd_en = 24
lcd_d4 = 23
lcd_d5 = 17
lcd_d6 = 18
lcd_d7 = 22
lcd_backlight = 4
lcd_columns = 16
lcd_rows = 2
lcd = LCD.Adafruit_CharLCD(
lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,
lcd_columns, lcd_rows, lcd_backlight)
time.sleep(2)
try:
while True
lcd_show(lcd, 'Wlan0')
lcd_show(lcd, 'Eth0')
sleep(5)
except KeyboardInterrupt:
lcd.clear()
lcd.blink(True)
lcd.message('Clearing\nCache')