LINUX.ORG.RU

Сообщения hasculdr

 

Как можно передать Vendor Class ID в запросе к dhcp-серверу (dhcp-option 60)?

Здравствуйте. Чтобы получить ip-адрес от сервера, нужно передать VCI.

1. Возможно ли эту задачу решить через NetworkManager (нужно для одного единственного тестового ethernet-соединения из множества имеющихся)?

2. Возможно ли эту настройку выполнить в dhcpcd (опять таки не для физического интерфейса, а для логического)?

 ,

hasculdr
()

ruby+postgresql, затык с кавычками

В postgres одинарные кавычки используются для строковых типов данных в полях, а двойные - для имен таблиц и полей. В ruby одинарные кавычки используются для «простых» строк, спец. символы в них экранируются автоматически. А двойные - для строк с исполняемыми фрагментами кода. Исполняемый фрагмент оформляется, например, так

"#{переменная}"

В базе есть такая запись

name | num | command
-------+-----+-----------------------------------
a7324 | 1 | statistics adsl linerate #{@port}

Команда должна извлечься запросом и выполниться telnet'ом с переменной @port, но из-за одинарных кавычек решетка экранируется и команда не работает.
Как быть в такой ситуации?

 ,

hasculdr
()

Куда копать для распараллеливания задачи в ruby?

Пусть в текстовом файле 1000 строк с ip-адресами, и необходимо выполнить на каждый адрес telnet-сессию + какие-либо действия на самом узле. Сейчас алгоритм такой: считать текстовый файл в массив -> для каждого полученного элемента этого массива поочередно выполнять host=Net::Telnet::new ... Возможно ли выполнять вышеописанное не для одного узла за раз, а, например, для десяти?

 

hasculdr
()

atftpd не отдает файлы больше чем одному клиенту

Здравствуйте. Сервер не может одновременно отдавать файлы нескольким клиентам - второй клиент при активном первом получает сообщение о неудачной передаче файла. Вот unit-файлы:

# cat /lib/systemd/system/atftpd.service
[Unit]
Description=Extended TFTP server
Documentation=man:atftpd(8)

[Service]
ExecStart=/usr/sbin/atftpd \
--maxthread 1000 \
--logfile /var/log/atftpd/atftpd.log \
--tftpd-timeout 5 \
--group nobody \
/srv/tftpboot
StandardInput=socket

# cat /lib/systemd/system/atftpd.socket
[Unit]
Description=TFTP socket for atftp

[Socket]
ListenDatagram=x.x.x.x:69

[Install]
WantedBy=sockets.target

В чем может быть проблема?

 

hasculdr
()

Установка glpi

Пакет glpi устанавливается в /var/www/webapps/glpi. По инструкции в браузере нужно заходить на http://ip_адрес/glpi. Если набирать только адрес, получаю страницу «It works!», а если ip-адрес/glpi - «Object not found!». Нагуглить ответ так и не смог.

 ,

hasculdr
()

ruby, неправильно выполняется прок

$cyrillic_mac_huawei=Proc.new { #прок для quidway для предотвращиния попыток поиска по мак-адресу с кирилическми символами
  while $mac.scan(/\P{ASCII}/).size != 0 do puts "Неправильная раскладка клавиатуры. Измените на латиницу"; $mac_search_huawei.call; end
  } #конец прока
$mac_search_huawei=Proc.new { #прок поиска порта по mac'у для <<<QUIDWAY>>>; позволяет циклично повторять поиск столько раз, сколько нужно
  puts "\nВведите часть mac-адреса (Образец для Quidway: xxxx-xxxx-xxxx):" #необходимо для поиска порта
  $mac=gets.chomp
  $cyrillic_mac_huawei.call
  $host.cmd("display mac-address | include #{$mac}") {|c| $dump=c; print c} #ищем порт по части mac-адреса
  puts "Для продолжения наберите 'n', для повторного поиска - любой другой символ:"
  $mac_search_choise=gets.chomp
  until $mac_search_choise == "n" do $mac_search_huawei.call; end
  } #конец прока

Не могу понять такое поведение: запускаю скрипт, выполняю поиск по вводу, все нормально. но если набрать ввод кириллицей (будет предложение сменить раскладку и автоматически запустится заново указанный выше кусок. НО при выборе пользователя далее (для продолжения n)) - код выполняется столько раз, сколько было вводов кирилицей (2,3 и более).

 

hasculdr
()

Проверка/изменение ввода, раскладки клавиатуры

В ruby есть стандартные средства для того, чтобы отследить какой раскладкой пользователь ввел данные (кирилица или латиница)? Есть ли методы для автоматической трансляции одной раскладки в другую, или тут нужно писать самому?

 

hasculdr
()

Ruby, как объявить переменные из значений в php-форме?

Не знаю даже как спросить правильно. Будет php-форма, куда человек вручную будет вводить данные, затем, после нажатия кнопки «далее/ok» должен будет запускаться ruby-скрипт, которому для работы будут необходимы переменные, объявленные из данных, введенных вручную в php-форму. Подскажите, как называется такой прием, даже поискать самостоятельно пока не получается. Если возможно, то покажите самый простенький пример.

 ,

hasculdr
()

Вопрос по rvm

rvm установлен в домашний каталог. В данный момент «current && default» версия 2.2.3.

$ ruby -v
выдает тоже самое. Скрипты начинаются со строки
#!/usr/bin/ruby
- нужно ли менять ее на
/home/user/.rvm/rubies/ruby-2.2.3/bin/ruby
? Версия ruby от дистрибутива - 1.9.3.

 ,

hasculdr
()

ruby, обработка ошибки тайм-аута

Скриптик обходит по очереди каждый узел (~1075 шт.) и выполняет на нем определенные действия. Проблема в том, что как только скрипт доходит до «лежачего» узла (а они есть практически всегда) - его выполнение прерывается. Список узлов находится в массиве, скрипт работает так:

array.each {|ip| host=Net::Telnet::new("Host" => ip, "Timeout" => 10, "Waittime" => 1, "Prompt" => /[#>\]-]/);
                                 пачка команд}. 
Как обработать ошибку тайм-аута так, чтобы выполнялся переход к следующему элементу массива, а не полное завершение работы цикла? Так же интересует общее решение проблемы - я бы хотел вести лог «необработанных» узлов (сейчас все сообщения об ошибках логируются с помощью $stderr, но само сообщение для меня бесполезно - мне нужен адрес лежачего коммутатора).

 , ,

hasculdr
()

Geany, теги для ruby

По-умолчанию на левой панельке отображается только список из методов. Переменные, массивы, проки и т.п. не отображается. Скачал с http://wiki.geany.org/tags/start#ruby_tags файлы тегов для ruby, в самом редакторе сделал «Инструменты -> Загрузить теги» - без изменений. Geany умеет распознавать в ruby что-нибудь кроме методов?

 ,

hasculdr
()

ruby, смена раскладки клавиатуры

В определенных местах скрипта нужно автоматически менять раскладку клавиатуры с русского на англицкий и обратно. В питоне подобное есть. А в ruby?

 ,

hasculdr
()

Поиск в массивах по подстрокам, ruby

Здравствуйте. Имеется текстовый файл с тысячей с лишним строчек вида (улица<пробел>дом-подъезд<табуляция>ip-адрес узла<переход на новую строку>)

Садовая 119-1 xxx.xxx.yyy.yyy
Ленина 113-2 xxx.xxx.yyy.yyy
Ленина 113-6 xxx.xxx.yyy.yyy

Нужно сделать поиск по файлу: я ввожу улицу и номер дома(без подъезда, т.к. узлы сети стоят не в каждом из них), а мне должна вернуться строка целиком (или несколько, по количеству совпадений). Дальше должно быть запоминание соответствующих ip-адресов в переменные и подстановка их в уже написанный скрипт, но это отдельный вопрос. Сейчас имею такое начало:

#!/usr/bin/ruby
# encoding: utf-8
puts "Что ищем?"
find=gets.chomp
buffer=[]
File.open("/home/hasculdr/Документы/bin/allKom").each { |line|
buffer<<line.split("\n")}
#puts buffer
if buffer.include?(find) then puts "Да"
else puts "Нет"
end
«puts buffer» выводит мне весь текстовый файл (т.е. массив таки создается), но если я начинаю искать внутри переменной по подстрокам - то мне ничего не возвращается - для проверки добавил условие, всегда возвращает «Нет»:
if buffer.include?(find) then puts "Да"
else puts "Нет"
end
Как лучше решить эту задачу - через массив или хеш? Можно ли введенную пользователем часть адреса дома преобразовать в регулярное выражение и выполнять поиск по нему, или регулярки здесь не нужны? Если делать через хеш, то нужно ли редактировать файл с данными до вида

«Садовая 119-1» => «xxx.xxx.yyy.yyy»
«Ленина 113-2» => «xxx.xxx.yyy.yyy»
«Ленина 113-6» => «xxx.xxx.yyy.yyy»

?

 

hasculdr
()

Использование expect в ruby

Здравствуйте. Необходимо выполнить действие, определенное выводом телнета. Пытаюсь использовать expect:

$host.login(username="admin", password="admin") {|c| $dump=c; print c}
$dump.expect(/<*> | *#/) {
  if /<*>/ then puts "Это Quidway."
  elsif /Vty*/ then puts "Это Edge-Core."
  else puts "Это Qtech."  
  end
  }
Вывод $host.login сохраняется в переменную $dump, и я точно знаю, что на этот момент последней строкой там сохранено то, что соответствует регулярному выражению /<*> | *#/ (перенаправлял вывод в текстовый файл, искомая строка там присутствует, как и остальная часть вывода работы telnet). Скажите, expect нужно применять на переменную, или есть другой вариант? Как правильно дописать условие в цикле выше?

 ,

hasculdr
()

Поиск в переменных

Первая тема тут - Ruby, сохранение вывода в переменную. Имеется такой код:

while dump.scan(/More/) do host.cmd(" ") {|a| dump=a; puts a}
end
dump - заранее объявлена и равна «пустоте» (dump=""). А переменная a - это «заполнитель» (так я называю конструкцию вида |a|). Могу ли я искать в «заполнителе», т.к. в dump всегда будут присутствовать строки «от старого» вывода. Редактировать вывод (удалять строки, где есть More) нежелательно.

 

hasculdr
()

Ruby, сохранение вывода в переменную

Есть большой вывод команды (таблица мак-адресов), нужно сохранить его в переменную (в файл не подходит). Это возможно сделать?

 , ,

hasculdr
()

Ruby, многостраничный вывод telnet

Здравствуйте. Пытаюсь научиться писать telnet-скрипты, начал с такой задачки: подключиться к удаленному узлу, вывести на экран список мак-адресов и отключиться. «Prompt» установлен в значение «приглашения» командной строки. Вывод списка мак-адресов на одной странице не умещается, выполняя команду «вручную» нужно нажимать «пробел» для пролистывания всего вывода. Собственно, скрипт завершает свою работу по тайм-ауту после вывода первой страницы (вместо «приглашения» командной строки выходит " ----More----"). Какими способами я могу получить оставшийся вывод команды? Сейчас «подключен» единственный модуль 'net/telnet'. Можно ли выполнить задачу без дополнительных модулей?

 

hasculdr
()

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