Найти - Пользователи
Полная версия: Как добавить список значений в переменную?
Начало » Python для новичков » Как добавить список значений в переменную?
1
shell_guy
Помогите править скрипт пожалуйста, пытаюсь получить список мак адресов помещался в 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())
PEHDOM
а какой сакральный смысл использвать переменныt окружения?
что мешает вам использвать просто строки в пайтоне?
чтото типа такого:
 mac_list='mac1\|mac2\|mac3'
ssh_client.exec_command('arp -an | {}'.format(mac_list))
satfan
Спасибо уважаемый PEHDOM
Я только начал пробовать с питоном.
Для меня это сложно.
Скрипт мне сделал друг.
shell_guy
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())

Спасибо!
PEHDOM
shell_guy
если выполнять со строчкой print(stdout.read()) тогда NameError: name ‘stdout’ is not defined
так его и нету 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 никуда не сохраняется.
верните как было stdin, stdout, stderr = ssh_client.exec_command…. если хотите смотреть что там вывалило в std…. и уберите .read().

shell_guy
верный ли формат записи ‘mac1\|mac2\|mac3’ (т.к. в bash работает а python?)
пайтону вообще пофиг для него это просто строка и он ее скормит “как есть” в качестве аргумента exec_command.
shell_guy
Благодарю, выполнил но результат пока все равно не такой)

#!/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)

Вывод:

copy.py

SSH connection is established to 192.168.0.1
Getting arp table…
<paramiko.ChannelFile from <paramiko.Channel 0 (open) window=24576 -> <paramiko.Transport at 0x57e31970 (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>

в stdout не попадает вывод о запуске sh скрипта т.е я не знаю отработал он или нет..и кроме того не выводиться инфа по
 ssh_client.exec_command('arp -an | {}'.format(mac_list))

Что я упускаю? прошу подсказать. Спасибо
PEHDOM
shell_guy
Что я упускаю? прошу подсказать. Спасибо
я таки был не прав оно таки возвращает stdin, stdout, stderr и нужно ипользовать .read()
Ественно не факт что оно вам чточто в stdout вывалит, мне вот оно вывалило в stderr:b'bash: mac1|mac2|mac3: command not found\n', что вобщемто неудивительно.
так что в принципе оно работает.Вопрос что вы от него хотите?
shell_guy
Скажите пожалуйста, а что делает данный кусок кода?
  {}'.format(mac_list))
py.user.next
shell_guy
Скажите пожалуйста, а что делает данный кусок кода?
  
>>> text = 'Hello, {}. I am {}.'.format('John', 'David')
>>> text
'Hello, John. I am David.'
>>>
shell_guy
py.user.next
Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB