Этот фрагмент избегает жесткого -кодирования имени устройства (типа 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'/')
Вероятно, лучше всего использовать подпроцесс и записать команду на стандартный ввод экрана.
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, потому что там, вероятно, есть особенности того, как правильно закрывать подобные подпроцессы, но это должно направить вас на правильный путь.