Столкнулся с одной проблемой в использовании библиотеки net/ssh. Пишу софтину под фаерволл dlink dfl-1600. Суть ее в том, чтобы пройти по локальной базе данных, и отправить часть пользователей из нее по ссш, в базу данных на фаерволл. Изначально все работало. Через некоторое время, при отправлении стала возникать ошибка, причем код я не менял:
| Код | /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb:188:in `verify_signature': could not verify server signature (Net::SSH::Exception) from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb:69:in `exchange_keys' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/algorithms.rb:331:in `exchange_keys' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/algorithms.rb:172:in `proceed!' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/algorithms.rb:163:in `send_kexinit' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/algorithms.rb:118:in `accept_kexinit' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/session.rb:186:in `block in poll_message' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/session.rb:164:in `loop' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/session.rb:164:in `poll_message' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/session.rb:201:in `block in wait' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/session.rb:199:in `loop' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/session.rb:199:in `wait' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh/transport/session.rb:78:in `initialize' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh.rb:183:in `new' from /usr/lib/ruby/gems/1.9.1/gems/net- ssh-2.1.0/lib/net/ssh.rb:183:in `start' from send.rb:8:in `adduser' from send.rb:18:in `<main>'
|
Возникло подозрение на изменение настроек оборудования. Забэкапил настройки на фаерволле, сбросил все до заводских настроек, ошибка по прежнему осталось. Причем странно то, что ошибка возникает рандомно, примерно 1 из 5 раз она может и не появиться. Затем возникло подозрение, что после обновления библиотеки net/ssh в ней появился какой-то баг, однако другим компьютером по ssh через эту же программу управляю без проблем.
Вот кусок кода, отвечающий за отправление данных на фаерволл:
| Код | require "net/ssh"
def adduser(name, ip, action) Net::SSH.start('172.1.2.11', 'admin', :password => 'pass') do |ssh| results = ssh.exec!("add Access Name=#{name} Interface=port4_lan1 Network=#{ip} Action=#{action}") puts results end Net::SSH.start('172.1.2.11', 'admin', :password => 'pass') do |ssh| results = ssh.exec!("activate") end sleep(7) Net::SSH.start('172.1.2.11', 'admin', :password => 'pass') do |ssh| results = ssh.exec!("commit") end end adduser("name", "172.1.2.115", "Expect")
|
Пробовал запускать на двух компьютерах ос Arch-linux, Версия руби 1.9.2p136 (2010-12-25 revision 30365) ос Fedora 14, Версия руби если не ошибаюсь там была 1.8
С чем это может быть связано?
|