Форум сайта python.su
0
Помогите править скрипт пожалуйста, пытаюсь получить список мак адресов помещался в 1 переменную python mac_list и затем подставлялся в bash команду arp -an но не выходит(
Прошу указать на ошибки
Вот код:
import paramiko import os HOST = "192.168.3.6" ssh_client = paramiko.SSHClient() #Add missing client key ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #connection ssh_client.connect(HOST,username='root', password='passswd') os.system("export mac_list='mac1\|mac2\|mac3'") os.environ['mac_list'] os.system('echo $mac_list') print('$mac_list') tdin, stdout, stderr = ssh_client.exec_command('arp -an|$mac_list') print(stdout.read())
Офлайн
294
а какой сакральный смысл использвать переменныt окружения?
что мешает вам использвать просто строки в пайтоне?
чтото типа такого:
mac_list='mac1\|mac2\|mac3' ssh_client.exec_command('arp -an | {}'.format(mac_list))
[code python][/code]
Отредактировано PEHDOM (Дек. 15, 2021 13:00:05)
Офлайн
-2
Спасибо уважаемый PEHDOM
Я только начал пробовать с питоном.
Для меня это сложно.
Скрипт мне сделал друг.
Офлайн
0
PEHDOM, спасибо за ответ. Пробовал выполнить код но получил пару ошибок:
1) если выполнять со строчкой print(stdout.read()) тогда NameError: name ‘stdout’ is not defined
2) верный ли формат записи ‘mac1\|mac2\|mac3’ (т.к. в bash работает а python?)
import paramiko host = "192.168.3.6" ssh_client = paramiko.SSHClient() ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh_client.connect(host,username='root', password='passwd') print('Connection is established to %s' %host) mac_list='mac1\|mac2\|mac3' ssh_client.exec_command('arp -an | {}'.format(mac_list)) #print(stdout.read())
Офлайн
294
shell_guyтак его и нету exec_command возвращает “the stdin, stdout, and stderr of the executing command, as a 3-tuple”. тоесть это не stdin, stdout, and stderr как таковые , а кортежи содержащие собственно то что упало в stdin, stdout, and stderr при выполнении комманды. У вас выполнение exec_command никуда не сохраняется.
если выполнять со строчкой print(stdout.read()) тогда NameError: name ‘stdout’ is not defined
shell_guyпайтону вообще пофиг для него это просто строка и он ее скормит “как есть” в качестве аргумента exec_command.
верный ли формат записи ‘mac1\|mac2\|mac3’ (т.к. в bash работает а python?)
[code python][/code]
Отредактировано PEHDOM (Дек. 15, 2021 16:42:39)
Офлайн
0
Благодарю, выполнил но результат пока все равно не такой)
#!/usr/bin/python
import paramiko
host = "192.168.3.6"
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(host,username='root', password='passwd')
print('SSH connection is established to %s' %host)
print('Getting arp table...')
mac_list='mac1\|mac2\|mac3'
command = "/opt/./arp.sh"
#runs command and reads the output using stdout
stdin, stdout, stderr = ssh_client.exec_command('arp -an | {}'.format(mac_list))
print(stdout)
ssh_client.exec_command('arp -an | {}'.format(mac_list))Отредактировано shell_guy (Дек. 15, 2021 17:51:04)
Офлайн
294
shell_guyя таки был не прав оно таки возвращает stdin, stdout, stderr и нужно ипользовать .read()
Что я упускаю? прошу подсказать. Спасибо
[code python][/code]
Отредактировано PEHDOM (Дек. 15, 2021 18:10:32)
Офлайн
0
Скажите пожалуйста, а что делает данный кусок кода?
{}'.format(mac_list))
Офлайн
857
shell_guy
Скажите пожалуйста, а что делает данный кусок кода?
>>> text = 'Hello, {}. I am {}.'.format('John', 'David') >>> text 'Hello, John. I am David.' >>>
Офлайн
0
py.user.next
Спасибо!
Офлайн