Python открывает экран и выполняет внутри экрана

Этот фрагмент избегает жесткого -кодирования имени устройства (типа eth0 )и будет использовать ipвместоifconfig:

/sbin/ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1  -d'/'

Он вернет IP-адрес первого активного устройства, указанного в выводе ip addr. В зависимости от вашей машины это может быть адрес ipv4 или ipv6.

Чтобы сохранить его в переменной, используйте:

ip=$(/sbin/ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1  -d'/')
2
12.09.2019, 18:24
1 ответ

Вероятно, лучше всего использовать подпроцесс и записать команду на стандартный ввод экрана.

proc = subprocess.Popen('screen -S sTest', shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
proc.stdin.write('echo I would like to be inside screen here.\n')
proc.stdin.write('spark-submit S1.py\n')
statusProc = subprocess.run('screen -ls', shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
statusString = statusProc.stdout.decode('ascii')
# parse screen's output (statusString) for your status list

Возможно, вам захочется освежить в памяти документацию subprocess.Popen, потому что там, вероятно, есть особенности того, как правильно закрывать подобные подпроцессы, но это должно направить вас на правильный путь.

0
29.09.2020, 18:54

Теги

Похожие вопросы