Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с net/ssh 
:(
    Опции темы
mendable
Дата 1.2.2011, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.2.2011

Репутация: нет
Всего: нет



Столкнулся с одной проблемой в использовании библиотеки 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

С чем это может быть связано?

PM MAIL   Вверх
source777
Дата 2.2.2011, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Включи отладочные сообщения:
Код

Net::SSH.start('172.1.2.11', 'admin', :password => 'pass', :verbose => :debug) do |ssh|

Кстати, чем обосновано создание нового SSH-подключения для каждой команды?


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
mendable
Дата 2.2.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.2.2011

Репутация: нет
Всего: нет



Да, у меня было подозрение на то, что меня банит фаерволл, из-за столь частых подключений. Я переписал это место, и сделал по нормальному. Просто сюда запостил именно этот кусок кода, потому-что не менял его, и тестил на нем библиотеку, и изначально он работал отлично.
PM MAIL   Вверх
mendable
Дата 3.2.2011, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.2.2011

Репутация: нет
Всего: нет



source777, вот отладочные сообщения вместе с ошибкой:
Код

D, [2011-02-03T22:23:18.872283 #2627] DEBUG -- net.ssh.transport.session[4892e58]: establishing connection to 172.1.2.11:22
D, [2011-02-03T22:23:18.873822 #2627] DEBUG -- net.ssh.transport.session[4892e58]: connection established
I, [2011-02-03T22:23:18.874233 #2627]  INFO -- net.ssh.transport.server_version[488f064]: negotiating protocol version
D, [2011-02-03T22:23:18.883331 #2627] DEBUG -- net.ssh.transport.server_version[488f064]: remote is `SSH-2.0-1'
D, [2011-02-03T22:23:18.883807 #2627] DEBUG -- net.ssh.transport.server_version[488f064]: local is `SSH-2.0-Ruby/Net::SSH_2.0.23 i686-linux'
D, [2011-02-03T22:23:18.887311 #2627] DEBUG -- tcpsocket[48928e0]: read 344 bytes
D, [2011-02-03T22:23:18.888053 #2627] DEBUG -- tcpsocket[48928e0]: received packet nr 0 type 20 len 340
I, [2011-02-03T22:23:18.888580 #2627]  INFO -- net.ssh.transport.algorithms[4879d40]: got KEXINIT from server
I, [2011-02-03T22:23:18.889617 #2627]  INFO -- net.ssh.transport.algorithms[4879d40]: sending KEXINIT
D, [2011-02-03T22:23:18.891007 #2627] DEBUG -- tcpsocket[48928e0]: queueing packet nr 0 type 20 len 556
D, [2011-02-03T22:23:18.891454 #2627] DEBUG -- tcpsocket[48928e0]: sent 560 bytes
I, [2011-02-03T22:23:18.891707 #2627]  INFO -- net.ssh.transport.algorithms[4879d40]: negotiating algorithms
D, [2011-02-03T22:23:18.893119 #2627] DEBUG -- net.ssh.transport.algorithms[4879d40]: negotiated:
* kex: diffie-hellman-group1-sha1
* host_key: ssh-rsa
* encryption_server: aes128-cbc
* encryption_client: aes128-cbc
* hmac_client: hmac-sha1
* hmac_server: hmac-sha1
* compression_client: none
* compression_server: none
* language_client: 
* language_server: 
D, [2011-02-03T22:23:18.893437 #2627] DEBUG -- net.ssh.transport.algorithms[4879d40]: exchanging keys
D, [2011-02-03T22:23:18.908649 #2627] DEBUG -- tcpsocket[48928e0]: queueing packet nr 1 type 30 len 140
D, [2011-02-03T22:23:18.909005 #2627] DEBUG -- tcpsocket[48928e0]: sent 144 bytes
D, [2011-02-03T22:23:19.004579 #2627] DEBUG -- tcpsocket[48928e0]: read 464 bytes
D, [2011-02-03T22:23:19.004958 #2627] DEBUG -- tcpsocket[48928e0]: received packet nr 1 type 31 len 444
/usr/lib/ruby/site_ruby/1.9.1/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/site_ruby/1.9.1/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb:69:in `exchange_keys'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh/transport/algorithms.rb:331:in `exchange_keys'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh/transport/algorithms.rb:172:in `proceed!'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh/transport/algorithms.rb:163:in `send_kexinit'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh/transport/algorithms.rb:118:in `accept_kexinit'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh/transport/session.rb:186:in `block in poll_message'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh/transport/session.rb:164:in `loop'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh/transport/session.rb:164:in `poll_message'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh/transport/session.rb:201:in `block in wait'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh/transport/session.rb:199:in `loop'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh/transport/session.rb:199:in `wait'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh/transport/session.rb:78:in `initialize'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh.rb:179:in `new'
    from /usr/lib/ruby/site_ruby/1.9.1/net/ssh.rb:179:in `start'
    from send.rb:6:in `adduser'
    from send.rb:23:in `<main>'

PM MAIL   Вверх
source777
Дата 6.2.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Цитата(mendable @  3.2.2011,  22:22 Найти цитируемый пост)
source777, вот отладочные сообщения вместе с ошибкой

А мне то они зачем? Ты ж сам говорил, что проблема возникает только иногда.. Такие ошибки решаются только серьёзной самостоятельной отладкой, а не по обрывкам логов на форуме. Проанализируй, сравни логи когда работает и когда не работает, проснифь сетевой траффик в момент работы твоей программы и т.д. и т.п.


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Библиотеки | Следующая тема »


 




[ Время генерации скрипта: 0.1383 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.