Я пытаюсь выполнить следующую строку в командной строке для выполнения некоторых (тестовых) удаленных команд на моем сервере:
plink.exe -ssh -pw [PASSWD] [U/NAME]@[SERVER] -m cmds.bat -v
В моем файле cmds.bat
у меня есть несколько тестовых команд:
sleep 3
@echo off
ls -la ~/
@echo on
sleep 1
Теперь я хочу усилить это, чтобы запустить удаленный скрипт при передаче аргумента. Аргумент будет обработан и добавлен моим кодом VBA. Это та часть, на которой я застрял. Обратите внимание, что следующий код VBA является лишь фрагментом; часть, которая вызывает Plink. Окружающий код, я доволен:
If re.Test(Msg.Subject) Then
Set matchCol = re.Execute(Msg.Subject)
For Each match In matchCol
shellStr = "plink.exe -ssh [USERNAME]@[SERVER] -pw [P/WORD] -m cmds.bat " & match
Shell(shellStr, vbNormalFocus)
Next
End If
Оскорбительная строка:
shellStr = "plink.exe -ssh [USERNAME]@[SERVER] -pw [P/WORD] -m cmds.bat " & match
Я не знаю, как добавить значение, хранящееся в переменной match
(захваченное регулярным выражением), к строке, которая будет выполняться при открытии оболочки.
Файл bat будет обрабатывать команду для фактического запуска сценария на удаленном сервере Unix, где вместо ls -la ~/
в приведенном выше примере я буду использовать:
python ~/myscript.py [ARGUMENT FROM VBA VARIABLE "match"]
Но как мне передать значение этой переменной match
в это?
match
, добавленным к команде для динамического запуска сценария на удаленном сервере из VBA перед вызовом оболочки, - это путь вперед. - person uncle-junky   schedule 01.05.2014match
? Какова его ценность? Какая у вас ошибка? Какое значение вы хотели бы иметьshellStr
? - person Jean-François Corbett   schedule 01.05.2014match
— это строка. Это будет похоже на ABC123. Я адаптировал свой код для записи файлаcmds.bat
на лету. Я не вижу, как еще передать это, чтобы plink выполнялся на удаленной стороне. - person uncle-junky   schedule 01.05.2014sendKeys
. - person unclemeat   schedule 02.05.2014