Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 15, 2021 10:32:15

shell_guy
Зарегистрирован: 2021-09-01
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добавить список значений в переменную?

Помогите править скрипт пожалуйста, пытаюсь получить список мак адресов помещался в 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())

Офлайн

#2 Дек. 15, 2021 12:59:45

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как добавить список значений в переменную?

а какой сакральный смысл использвать переменныt окружения?
что мешает вам использвать просто строки в пайтоне?
чтото типа такого:

 mac_list='mac1\|mac2\|mac3'
ssh_client.exec_command('arp -an | {}'.format(mac_list))



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 15, 2021 13:00:05)

Офлайн

#3 Дек. 15, 2021 14:09:31

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Как добавить список значений в переменную?

Спасибо уважаемый PEHDOM
Я только начал пробовать с питоном.
Для меня это сложно.
Скрипт мне сделал друг.

Офлайн

#4 Дек. 15, 2021 14:52:20

shell_guy
Зарегистрирован: 2021-09-01
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добавить список значений в переменную?

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())

Спасибо!

Офлайн

#5 Дек. 15, 2021 16:41:28

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как добавить список значений в переменную?

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.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 15, 2021 16:42:39)

Офлайн

#6 Дек. 15, 2021 17:49:13

shell_guy
Зарегистрирован: 2021-09-01
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добавить список значений в переменную?

Благодарю, выполнил но результат пока все равно не такой)

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

Что я упускаю? прошу подсказать. Спасибо

Отредактировано shell_guy (Дек. 15, 2021 17:51:04)

Офлайн

#7 Дек. 15, 2021 18:08:20

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как добавить список значений в переменную?

shell_guy
Что я упускаю? прошу подсказать. Спасибо
я таки был не прав оно таки возвращает stdin, stdout, stderr и нужно ипользовать .read()
Ественно не факт что оно вам чточто в stdout вывалит, мне вот оно вывалило в stderr:b'bash: mac1|mac2|mac3: command not found\n', что вобщемто неудивительно.
так что в принципе оно работает.Вопрос что вы от него хотите?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 15, 2021 18:10:32)

Офлайн

#8 Дек. 16, 2021 09:15:14

shell_guy
Зарегистрирован: 2021-09-01
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добавить список значений в переменную?

Скажите пожалуйста, а что делает данный кусок кода?

  {}'.format(mac_list))

Офлайн

#9 Дек. 16, 2021 16:34:50

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

Как добавить список значений в переменную?

shell_guy
Скажите пожалуйста, а что делает данный кусок кода?
  
>>> text = 'Hello, {}. I am {}.'.format('John', 'David')
>>> text
'Hello, John. I am David.'
>>>



Офлайн

#10 Дек. 17, 2021 08:53:00

shell_guy
Зарегистрирован: 2021-09-01
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добавить список значений в переменную?

py.user.next
Спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version