LINUX.ORG.RU

Сообщения hasculdr

 

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

Форум — Admin

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

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

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

 ,

hasculdr
()

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

Форум — Development

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

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

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

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

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

 ,

hasculdr
()

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

Форум — Development

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

 

hasculdr
()

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

Форум — Admin

Здравствуйте. Сервер не может одновременно отдавать файлы нескольким клиентам - второй клиент при активном первом получает сообщение о неудачной передаче файла. Вот 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

Форум — Admin

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

 ,

hasculdr
()

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

Форум — Development
$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
()

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

Форум — Development

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

 

hasculdr
()

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

Форум — Development

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

 ,

hasculdr
()

Вопрос по rvm

Форум — Development

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, обработка ошибки тайм-аута

Форум — Development

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

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

 , ,

hasculdr
()

Geany, теги для ruby

Форум — Development

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

 ,

hasculdr
()

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

Форум — Development

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

 ,

hasculdr
()

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

Форум — Development

Здравствуйте. Имеется текстовый файл с тысячей с лишним строчек вида (улица<пробел>дом-подъезд<табуляция>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

Форум — Development

Здравствуйте. Необходимо выполнить действие, определенное выводом телнета. Пытаюсь использовать 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
()

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

Форум — Development

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

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

 

hasculdr
()

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

Форум — Development

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

 , ,

hasculdr
()

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

Форум — Development

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

 

hasculdr
()

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