Как передать аргумент в Plink в VBA

Я пытаюсь выполнить следующую строку в командной строке для выполнения некоторых (тестовых) удаленных команд на моем сервере:

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 в это?


person uncle-junky    schedule 01.05.2014    source источник
comment
Теперь я думаю, что написание файла bat на лету из VBA со значением match, добавленным к команде для динамического запуска сценария на удаленном сервере из VBA перед вызовом оболочки, - это путь вперед.   -  person uncle-junky    schedule 01.05.2014
comment
Какой тип данных match? Какова его ценность? Какая у вас ошибка? Какое значение вы хотели бы иметь shellStr?   -  person Jean-François Corbett    schedule 01.05.2014
comment
match — это строка. Это будет похоже на ABC123. Я адаптировал свой код для записи файла cmds.bat на лету. Я не вижу, как еще передать это, чтобы plink выполнялся на удаленной стороне.   -  person uncle-junky    schedule 01.05.2014
comment
Вам может быть проще всего использовать что-то вроде sendKeys.   -  person unclemeat    schedule 02.05.2014
comment
Опять же, какую ошибку вы получаете? Вы говорите, что это оскорбительная линия, но каким образом она оскорбляет вас? На данный момент вы не дали понять, в чем именно заключается ваша проблема...   -  person Jean-François Corbett    schedule 02.05.2014


Ответы (1)


ты не сможешь это сделать; plink просто не поддерживает это использование. лучше всего делать то, что вы предложили в своем комментарии: создавать скрипт на лету. (и, возможно, не называйте это .bat, это немного вводит в заблуждение…)

person ths    schedule 27.08.2014