LINUX.ORG.RU

Сообщения atraides

 

Telegram bot, timeout handler и привязка к пользователю начавшему диалог с ботом.

Форум — Development

Приветствую всех, делаю бота на питоне , с модулем telebot , возник вопрос : 1. Как сделать таймаут хендлера , например боту отдана первая команда /k , бот ожидает ввода от пользователя , чтобы перейти к следующей функции get_info ... , мне хотелось бы ввести тайм аут ожидания в районе 5 минут, а потом хендлер бы сбрасывался, возможно ли это сделать ? 2. Как сделать привязку к пользователю который ввел команду. Сейчас любой пользователь в группе может перехватить так сказать диалог с ботом... например , я пишу команду /k , и бот должен только от меня дальше пойти выполнять уже следующую функцию, подозреваю что нужно привязываться к параметрку uid = message.from_user.id , но может есть другой способ?

@bot.message_handler(commands=['k'])
def start(message):
     chat_id = message.chat.id
     sent = bot.send_message(message.chat.id, 'Введите команду в формате  /P21T0110  /Л11705054')
     bot.register_next_step_handler(sent, get_info)

#INFO GET
def get_info(message):
    #uid = message.from_user.id
    text = message.text
    bot.send_message(message.chat.id, 'Вы ввели команду {0:}'.format(text))

 , ,

atraides
()

Поиск не управляемых коммутаторов (Expect)

Форум — Development

Привет всем, задачка стоит сделать поиск плоских свичей на сети, гугл особо результатов не дал в поиске(( Поэтому решил с помощью Expect это сделать, идея была такова заходим на свич Telnet'ом и выполняем команды

display mac-address dynamic Ethernet 0/0/1 , display mac-address dynamic Ethernet 0/0/2 ,

итд 1-24 порты кроме Uplink портов, команда выводит кол-во маков за портом , там где больше 3х значит стоит плоский свитч. Пытался сделать на экспекте , но не могу понять как наладить вывод информации в текстовый файлик. Была идея включать логирование при срабатывании условия :

send «display mac-address dynamic Ethernet 0/0/1\r»
expect {

«items displayed = 3» {
log_file $host
send «display mac-address dynamic Ethernet 0/0/1\r»
log_file

}

«items displayed = 4» {
log_file $host
send «display mac-address dynamic Ethernet 0/0/1\r»
log_file

}

«items displayed = 5» {
log_file $host
send «display mac-address dynamic Ethernet 0/0/1\r»
log_file

}

Но минус такого варианта что награмождается тест программы и скорость обработки падает считай на каждый порт он делает команду disp mac-add ... порт N и экспектом ожидает все возможные варианты колл-во маков за портом от 3 до 20 скажем, и так на каждый порт нужно писать. Хотелось бы включить какуюто проверку условия скажем display mac-address dynamic Ethernet 0/0/1 команда выдала: «items displayed = >3 тогда передавать в лог $host номер хоста и порт с кол-вом маков. Заранее извиняюсь, с экспектом да и вообще с написанием скрпитов совсем не шарю, находил в нете готовые варианты и под себя переделывал. Подскажите кто что может)

 

atraides
()

RSS подписка на новые темы