

Iliya
17.08.2018
11:49:44
Возник вопрос, есть скрип который выполняется на серваке, когда мне надо т.е. я его руками вызываю и он отправляет команды на несколько cisco девайсов - для просмотра простой инфы вроде
show cpu table
так вот вопрос, есть некоторые команды, которые cisco выполняет не за секунду, а за несколько по это причине юзается костыль вроде time.sleep(5)
но иногда команда на циске выполняется явно быстрее 5 сек, но вывода приходится ждать 5 сек
собстенно ВОПРОС
что сделать вместо слипа, чтобы скрипт дождался отработки команды на циске и перешел к следующей(или вернул мне вывод) сразу после того как циска отработает и вернет вывод команды
Cisco девайс возвращает ответ на команды ПОСТРОЧНО!
Т.е. show cpu table - отработав отдает 1 строка -> идет на вывод потом 2я строка идет на вывод и тд по конца
так что вариант с while not channel.send_ready(): time.sleep(0.1) не подходит так как send_ready() выполняет свою функцию получив только первую строку овтета и запускает следующую команду и в итоге получаю ответы только первые строки выводов команд
КОД функции
def command_send(ip, name):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip, port=22, username=user, password=password)
time.sleep(2)
print('Info from ' + name + ':\n')
chan = ssh.invoke_shell()
if a == 20:
for line in cli:
while not chan.send_ready():
time.sleep(0.1)
chan.send(line + '\n')
else:
while not chan.send_ready():
time.sleep(0.1)
chan.send(command_list[a] + '\n')
while not chan.recv_ready():
time.sleep(0.1)
output = chan.recv(99999)
print ('\n'.join(output.split('\n')[3:]) + '\n' + '*' * 80)
ssh.close()


Cykooz
17.08.2018
11:52:02

Влад
17.08.2018
11:54:45
Добрый день, помогите решить проблему,

Google

Влад
17.08.2018
11:54:45
Ос перемещает а субпроцес нет
Почему ?

Iliya
17.08.2018
12:04:09
9 девушек за час, какой-то женский клуб решил писать на питоне -)?

Alessio
17.08.2018
12:06:12

Valery
17.08.2018
12:06:33

Dk
17.08.2018
12:07:06

Eldar
17.08.2018
12:07:29
я буду выдвать РО

Sergey
17.08.2018
12:10:30
Подскажите по регулярке. Вот так выражение:
ftp_host = re.findall(r'@\w+.(\w+)', 'ftp://user:passwd@host:1111/base/dir')
вернёт "@host". А как переделать, чтобы возвращало просто host, без амперсанда?

Eldar
17.08.2018
12:11:19

Aragaer
17.08.2018
12:12:56
угх
нинада регулярку
https://docs.python.org/3.5/library/urllib.parse.html#urllib.parse.urlparse

Google

Aragaer
17.08.2018
12:14:52
>>> from urllib.parse import urlparse
>>> urlparse('ftp://user:passwd@host:1111/base/dir')
ParseResult(scheme='ftp', netloc='user:passwd@host:1111', path='/base/dir', params='', query='', fragment='')
а дальше уже netloc сплитнуть по собаке, а потом переднюю часть сплитнуть по двоеточию

Кирилл
17.08.2018
12:15:32
думаешь urlparse не использует re ?

Maxim
17.08.2018
12:15:45
Гайз, можно ли как-нибудь в одном скрипте 2 бесконечных цикла параллельно запустить?


Iliya
17.08.2018
12:15:48
Возник вопрос, есть скрип который выполняется на серваке, когда мне надо т.е. я его руками вызываю и он отправляет команды на несколько cisco девайсов - для просмотра простой инфы вроде
show cpu table
так вот вопрос, есть некоторые команды, которые cisco выполняет не за секунду, а за несколько по это причине юзается костыль вроде time.sleep(5)
но иногда команда на циске выполняется явно быстрее 5 сек, но вывода приходится ждать 5 сек
собстенно ВОПРОС
что сделать вместо слипа, чтобы скрипт дождался отработки команды на циске и перешел к следующей(или вернул мне вывод) сразу после того как циска отработает и вернет вывод команды
Cisco девайс возвращает ответ на команды ПОСТРОЧНО!
Т.е. show cpu table - отработав отдает 1 строка -> идет на вывод потом 2я строка идет на вывод и тд по конца
так что вариант с while not channel.send_ready(): time.sleep(0.1) не подходит так как send_ready() выполняет свою функцию получив только первую строку овтета и запускает следующую команду и в итоге получаю ответы только первые строки выводов команд
КОД функции
def command_send(ip, name):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip, port=22, username=user, password=password)
time.sleep(2)
print('Info from ' + name + ':\n')
chan = ssh.invoke_shell()
if a == 20:
for line in cli:
while not chan.send_ready():
time.sleep(0.1)
chan.send(line + '\n')
else:
while not chan.send_ready():
time.sleep(0.1)
chan.send(command_list[a] + '\n')
while not chan.recv_ready():
time.sleep(0.1)
output = chan.recv(99999)
print ('\n'.join(output.split('\n')[3:]) + '\n' + '*' * 80)
ssh.close()
@aragaer может у вас есть идеи по этому вопросу?ъ


Aragaer
17.08.2018
12:17:45
и даже еще круче
>>> from urllib.parse import urlsplit
>>> res = urlsplit('ftp://user:passwd@host:1111/base/dir')
>>> res.username
'user'
>>> res.hostname
'host'
>>> res.password
'passwd'


Artyem
17.08.2018
12:20:23
Возник вопрос, есть скрип который выполняется на серваке, когда мне надо т.е. я его руками вызываю и он отправляет команды на несколько cisco девайсов - для просмотра простой инфы вроде
show cpu table
так вот вопрос, есть некоторые команды, которые cisco выполняет не за секунду, а за несколько по это причине юзается костыль вроде time.sleep(5)
но иногда команда на циске выполняется явно быстрее 5 сек, но вывода приходится ждать 5 сек
собстенно ВОПРОС
что сделать вместо слипа, чтобы скрипт дождался отработки команды на циске и перешел к следующей(или вернул мне вывод) сразу после того как циска отработает и вернет вывод команды
Cisco девайс возвращает ответ на команды ПОСТРОЧНО!
Т.е. show cpu table - отработав отдает 1 строка -> идет на вывод потом 2я строка идет на вывод и тд по конца
так что вариант с while not channel.send_ready(): time.sleep(0.1) не подходит так как send_ready() выполняет свою функцию получив только первую строку овтета и запускает следующую команду и в итоге получаю ответы только первые строки выводов команд
КОД функции
def command_send(ip, name):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip, port=22, username=user, password=password)
time.sleep(2)
print('Info from ' + name + ':\n')
chan = ssh.invoke_shell()
if a == 20:
for line in cli:
while not chan.send_ready():
time.sleep(0.1)
chan.send(line + '\n')
else:
while not chan.send_ready():
time.sleep(0.1)
chan.send(command_list[a] + '\n')
while not chan.recv_ready():
time.sleep(0.1)
output = chan.recv(99999)
print ('\n'.join(output.split('\n')[3:]) + '\n' + '*' * 80)
ssh.close()
https://ru.wikipedia.org/wiki/Expect
https://pexpect.readthedocs.io/en/stable/
оно по идее какраз для таких вещей, есть расширение для paramiko
https://github.com/fgimian/paramiko-expect


Iliya
17.08.2018
12:20:51
не знаю, я с парамикой не работал особо
я думаю на потоки разбить, к примеру мне надо опрашивать 12 машин = 12 потоков, но с ними давненько не работал.
Как мне заставить ожидать полного завершения потока - а потом положить это куда-нибудь потом все сложить из потоков и вывести сразу

Alex
17.08.2018
12:22:15
есть asyncio

Aragaer
17.08.2018
12:30:31
асинкио не потоки

Dk
17.08.2018
12:32:40
Джангогёрлз с митапа чтоль?

Alex
17.08.2018
12:33:21
асинкио не потоки
не потоки, но я так понял ему нужно опросить 12 серверов, asyncio тут как раз подойдет

Nikolay
17.08.2018
12:38:49

Hope
17.08.2018
12:38:57
в понедельник

Iliya
17.08.2018
12:39:25

Nikolay
17.08.2018
12:40:34
Анзибл ещё умеет ждать сервера

Google

Iliya
17.08.2018
12:41:26
так что пока основная идея потоки - складывать вывод из них в пул и потом этот пул выводить
пол первый отработал в пул кто второй за ним и только когда последний отработает и запишется в пул выводить его
как заставить поток ждать полного вывода и потом его отправить в пул
и еще вопрос, что лучше использовать для этого пула

Alex
17.08.2018
12:42:10

Iliya
17.08.2018
12:42:44
щито?
ну тип опрашивать все машины сразу каждую в отжельном потоке

Alex
17.08.2018
12:43:09
concurrent.futures же...

ivanblch R13 [Denis ?? Armavir]
17.08.2018
12:43:42

Alex
17.08.2018
12:44:01

ivanblch R13 [Denis ?? Armavir]
17.08.2018
12:44:37
оно хоть потоки, хоть процессы, хоть целые компы меж собой соединит
хоть как опрашивай

Alex
17.08.2018
12:46:12

ShadoWalkeR
17.08.2018
12:46:48
Господа. Есть интересный вопрос - есть ситуация
import ABC
class Test:
from local_funcs import f1
from local_funcs import f2
local_funcs - один из кучи файлов, реализующих методы класса, чтобы не превращать в гигантскую портянку главный файл. Как мне ABC унаследовать в загружаемые методы класса? Не очень улыбается этот import пихать в каждый файл

ivanblch R13 [Denis ?? Armavir]
17.08.2018
12:47:11
на любые - так на любые. По утрам мастурбируете?

Bohdan
17.08.2018
12:47:24
вопрос: админов звать или сам выпилишься и сообщение удалишь?

Alex
17.08.2018
12:48:27

ShadoWalkeR
17.08.2018
12:49:18
У меня не странных вопросов не бывает. В одном проекте просто очень своеобразное представление о том как питон надо использовать в качестве встроенного ЯП
Пример разработчиков
https://github.com/kamailio/kamailio/blob/master/misc/examples/kemi/kamailio-basic-kemi-python.py

Artyem
17.08.2018
12:52:05


Panda
17.08.2018
13:06:17
Вопрос:
import requests
в цикле RECORD = requests.get(некий урл) (ну фрешдеск если быть точным)
читает то 10 страниц, то 30
потом падает
...\Python36-32\lib\site-packages\urllib3\connection.py", line 171, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw)
ну и еще пару ошибок в connection.py
гугль говорит что это тайм-аут еррор
time.sleep в цикле никак не помогает
кто-то сталкивался?

Denis
17.08.2018
13:14:33

Admin
ERROR: S client not available

ShadoWalkeR
17.08.2018
13:15:26
В функциях, которые я ипортирую в класс в качестве методов есть вызовы функций ABC

Google

Denis
17.08.2018
13:16:02
И зачем его тут импортировать, а не в local_funcs?

Iliya
17.08.2018
13:17:27

Sergey
17.08.2018
13:32:07
Подскажите по регулярке, строка :
ftp_user = re.findall(r'//(\w+)', parse_path)
Выводит результаты как список. Как сделать чтобы выдавало просто строку?

Dmitriy
17.08.2018
13:37:39

Ilya
17.08.2018
13:58:06
Привет, подскажите, кто на Python подключал internet explorer к selenium webdriver? Есть рабочие примеры?

Вадим
17.08.2018
14:01:25

Ilya
17.08.2018
14:03:00

Вадим
17.08.2018
14:04:27

Ilya
17.08.2018
14:04:45
что? причем тут это)

Вадим
17.08.2018
14:07:12

Ilya
17.08.2018
14:07:27
работает.
даже для оперы какой нибудь работает

Вадим
17.08.2018
14:08:20

Ilya
17.08.2018
14:09:15
Ie с большой буквы

Вадим
17.08.2018
14:10:21

Igor
17.08.2018
14:16:21
Где стоимость рекламы на канале посмотреть ?

Eldar
17.08.2018
14:17:08

Igor
17.08.2018
14:27:32
Не продается реклама на канале ?

Eldar
17.08.2018
14:27:49

Google

Igor
17.08.2018
14:28:59
Програмисты крутые ребята ))

Андрей
17.08.2018
14:33:49

Cashik
17.08.2018
14:38:55

Иван
17.08.2018
15:08:09
Ребята help я новичок в питоне помогите))
сижу из под ubuntu запускаю python скрипт пишет ошибку что мол нету файла или папки хотя я ее создал и лежит в корне с файлом, что не так?