1 (изменено: alexii, 2012-06-28 17:40:50)

Тема: VBScript: Работа с SSH

Добрый день коллеги.

Столкнулся со следующей проблемой.
Необходимо реализовать автоматический backUp коммутаторов HP через tftp сервер.
в инете нарыл 2 библиотеки умеющие работать с ssh Chilkat.Ssh и ActiveXperts.Ssh

Получились вот такие скрипты, но не один из них не работает, помогите разобраться.

1) Вариант

Set objSsh           = CreateObject("ActiveXperts.Ssh")         ' Create an Ssh instance
objSsh.Host          = "10.77.3.207"                           ' Hostname or IP address of 
                                                                ' remote UNIX/LINUX machine
objSsh.UserName      = "admin"                                   ' Login as 'root'
objSsh.Password      = "123456"
'objSsh.Port          = "22"
objSsh.Command       = "copy running-config tftp 10.77.2.90 test.txt"                                ' Command to execute
objSsh.ScriptTimeOut = 5000                                     ' Time-out (in milliseconds)
objSsh.Run                                                      ' Execute the command now
WScript.Echo "Run: result = " & objSsh.LastError 
If objSsh.LastError <> 0 Then
  WScript.Echo "Error "  & objSsh.LastError
End If
' YES, command has completed
WScript.Echo "StdErr: " & objSsh.StdErr                         ' Print Standard Output
WScript.Echo "StdOut: " & objSsh.StdOut                         ' Print Standard Error

WScript.Echo "Ready."

2) Вариант

Dim fso, outFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set outFile = fso.CreateTextFile("output.txt", True)

Set ssh = CreateObject("Chilkat.Ssh")

hostname = "10.77.3.207"
port = 22


success = ssh.Connect(hostname,port)
ssh.IdleTimeoutMs = 5000
success = ssh.AuthenticatePw("admin","123456")

channelNum = ssh.OpenSessionChannel()

cmd1 = "copy running-config tftp 10.77.2.90 test.txt"


success = ssh.SendReqExec(channelNum,cmd1)

pollTimeoutMs = 2000
n = ssh.ChannelReadAndPoll(channelNum,pollTimeoutMs)


success = ssh.ChannelSendClose(channelNum)

success = ssh.ChannelReceiveToClose(channelNum)

cmdOutput = ssh.GetReceivedText(channelNum,"ansi")
If (cmdOutput = vbNullString ) Then
    'MsgBox ssh.LastErrorText
    'WScript.Quit
End If

'  Display the remote shell's command output:
outFile.WriteLine(cmdOutput)

'  Disconnect
ssh.Disconnect 
outFile.Close

Заранее благодарен за помощь.

2

Re: VBScript: Работа с SSH

а причем тут ссш ?

Я конечно далек от мысли... (с)

3

Re: VBScript: Работа с SSH

подключение к коммутаторам осуществляется по ssh.

4

Re: VBScript: Работа с SSH

"backUp коммутаторов HP через tftp сервер" - а коммутаторы сами не умеют ?

а так plink -pw pass user:host "copy running-config tftp 10.77.2.90 test.txt"

Я конечно далек от мысли... (с)

5

Re: VBScript: Работа с SSH

Нет, к сожалению такой функционал на них не реализован.
это вариант, но для каждого коммутатора придется вводить вручную, а хотелось бы настроить цикл, в котором будут перебираться ip адреса.
еще почему хотелось бы реализовать на vbs или vba т.к в дальнейшем поняв как обращаться к коммутаторам дописать отображение настроек портов а едином excel файле.

6

Re: VBScript: Работа с SSH

echo off
set baseip=10.77.3
set user=Вася
set pass=Пупкин
for /l %%x in (1,207,215) do (
    plink -pw %pass% %user%:%baseip%.%%x "copy running-config tftp 10.77.2.90 test.txt"
)
Я конечно далек от мысли... (с)

7

Re: VBScript: Работа с SSH

Прокомментируйте пожалуйста код:

for /l %%x in (1,207,215) do (
    plink -pw %pass% %user%:%baseip%.%%x "copy running-config tftp 10.77.2.90 test.txt"
)

8

Re: VBScript: Работа с SSH

комментарий не нужен, спасибо!

9

Re: VBScript: Работа с SSH

Но все же возможно подобный функционал реализовать через VBA?

10 (изменено: alexii, 2012-06-30 03:08:25)

Re: VBScript: Работа с SSH

Попробуй подойти к проблеме со стороны браузера, направление действий:

     var oIE=WScript.CreateObject('InternetExplorer.Application', "ie_");
     oIE.navigate("твой IP");  // можно циклом
     oIE.visible=0;                 // Если не хочешь смотреть на открытое окно
     while(oIE.Busy) WScript.Sleep(200);
     var ob=oIE.Document.Script;
              здесь надо ввести параметры Логина и пароля, организовать переход по ссылке на страницу BackUP (по сути работа в среде браузера, только скриптом)
     oIE.Quit();

11 (изменено: alexii, 2012-06-30 13:55:57)

Re: VBScript: Работа с SSH

к сожалению, функция бекапа не реализована через web интерфейс.

Пытаюсь допилить ваш скрипт с толкнулся с такими трудностями:
при подключении к коммутатору необходимо послать команду нажатия любой клавиши в этой сессии, а после уже отправлять команду BackUP-а

Подскажите как это сделать?

echo on
set baseip=10.77.3
set user=admin
set pass=123456
for /l %%i in (207,1,215) do (
plink.exe -ssh -batch %baseip%.%%i -l user% -pw %pass% "copy running-config tftp 10.77.2.90 1.txt")

12

Re: VBScript: Работа с SSH

Коллеги, напоминаю, что код оформляется тэгом «code».

13

Re: VBScript: Работа с SSH

нашел вот такой выход с положения, указав файл ответов в коде, но необходимо сохранять каждый когфиг отдельно, можно ли параметр 1.txt заманить на переменную, так что б конфиг каждого коммутатора отличался.

echo on
set baseip=10.77.3
set user=admin
set pass=123456
for /l %%i in (207,1,208) do (
plink.exe -ssh -batch %baseip%.%%i -l %user% -pw %pass% <a.txt >log.txt
)

Тест файла a.txt такой:

    - пробелы, т.к войдя в сессию необходимо нажать любую клавишу  
copy running-config tftp 10.77.2.90 1.txt
exit
exit
y

14

Re: VBScript: Работа с SSH

Vetal142, создавайте файл «a.txt» непосредственно из пакетного файла, после использования — оттуда же удаляйте.

15

Re: VBScript: Работа с SSH

сильно б помогло б если еще скрипт кинули.

16

Re: VBScript: Работа с SSH

set sFileName=1.txt

(
    echo.    
    echo.copy running-config tftp 10.77.2.90 %sFileName%
    echo.exit
    echo.exit
    echo.y
) >a.txt

rem Здесь код

del a.txt

17

Re: VBScript: Работа с SSH

спасибо!