Передача параметра из одного командного файла в другой не работает

Я хочу войти в среду Linux, скажем, ENV1, и запустить команду из ENV1, чтобы автоматически скопировать файл из ENV1 в ENV2.

Все работает нормально, когда я использую команды ниже.

Я запускаю «BATCH_FILE.bat», который считывает команду из файла «COMMANDS_TO_RUN_IN_LINUX.bat», чтобы скопировать файл из ENV1 в ENV2.

Содержимое файла BATCH_FILE.bat, как показано ниже:

"C:\putty.exe" -ssh myuser_ENV_ONE@ENV1_ipaddress -pw "mypassword_ENV_ONE" -m "C:\COMMANDS_TO_RUN_IN_LINUX.bat"

Содержимое COMMANDS_TO_RUN_IN_LINUX.bat, как показано ниже:

sshpass -p "mypassword_ENV_TWO" scp /u01/file.txt myuser_ENV_TWO@ENV2_ipaddress:/u01/file.txt

Теперь возникает проблема: я хочу, чтобы пользователь передал оба IP-адреса среды (ENV1 и ENV2), а не жесткое кодирование, и для этого я изменил команду, как показано ниже:

Изменено содержимое файла BATCH_FILE.bat, как показано ниже:

"C:\putty.exe" -ssh myuser_ENV_ONE@%1 -pw "mypassword_ENV_ONE" -m "C:\COMMANDS_TO_RUN_IN_LINUX.bat"

Содержимое COMMANDS_TO_RUN_IN_LINUX.bat, как показано ниже:

sshpass -p "mypassword_ENV_TWO" scp /u01/file.txt myuser_ENV_TWO@%2:/u01/file.txt

Я передаю детали ENV1 при запуске BATCH_FILE.bat из командной строки, и он работает нормально, и я регистрируюсь в ENV1.

Но сейчас я понятия не имею, как передать ENV2, который, в свою очередь, заменит %2.

Вместо этого я попытался использовать %1, просто чтобы проверить, передается ли параметр %1 из BATCH_FILE.bat в COMMANDS_TO_RUN_IN_LINUX.bat, и, в свою очередь, он копирует файл из ENV1 обратно в ENV1.

Но это также дало мне ошибку «неизвестный хост% 1». он не был передан как параметр.

Я просмотрел несколько сообщений, но ни одно из них не решило мою проблему.


person Rahul    schedule 30.07.2018    source источник
comment
Также обратите внимание, что вам, вероятно, следует использовать Plink (из пакета PuTTY) вместо самого PuTTY. См. раздел Автоматизация выполнения команд/скриптов с помощью PuTTY.   -  person Martin Prikryl    schedule 30.07.2018
comment
Спасибо, Мартин, я прошел по приведенной выше ссылке и согласен с тем, как работает -m, но упомянутый обходной путь не сработал для меня...   -  person Rahul    schedule 30.07.2018
comment
Я тоже попробую с plink и обновлю   -  person Rahul    schedule 30.07.2018
comment
Пробовал Plink и C:\plink.exe -ssh myuser@%1 -pw mypass123 /u01/./COPY_SCRIPT.sh %1 это работает, т.е. я могу передать файл из той же среды (использовал %1 в обоих местах и передан 1 параметр)   -  person Rahul    schedule 30.07.2018
comment
Но когда я пытаюсь передать 2 параметра как C:\plink.exe -ssh myuser@%1 -pw mypass123 /u01/./COPY_SCRIPT.sh %2, это не работает   -  person Rahul    schedule 30.07.2018
comment
и я получаю ошибку ниже   -  person Rahul    schedule 30.07.2018
comment
C:\plink.exe -ssh [email protected] -pw pass123 /u01/./COPY_SCRIPT.sh 11.111.11.12 ssh: не удалось разрешить имя хоста: имя или служба не известны, потеряно соединение   -  person Rahul    schedule 30.07.2018
comment
C:\plink.exe -ssh [email protected] -pw pass123 /u01/./COPY_SCRIPT.sh 11.111.11.11 работает нормально   -  person Rahul    schedule 30.07.2018
comment
Так что похоже, что 11.111.11.11 не может идентифицировать 11.111.11.12 ??   -  person Rahul    schedule 30.07.2018
comment
Но странно то, что если я запускаю COPY_SCRIPT.sh вручную из шпатлевки, копирование с 11.111.11.11 на 11.111.11.12 работает нормально даже с параметрами   -  person Rahul    schedule 30.07.2018
comment
Итак, теперь у вас другой вопрос. Поэтому либо отредактируйте свой текущий вопрос соответствующим образом. Или примите, что этот вопрос дублируется, и опубликуйте новый вопрос для вашей новой проблемы.   -  person Martin Prikryl    schedule 30.07.2018
comment
Я принял его как дубликат, я опубликую новый вопрос. Было бы здорово, если бы вы могли помочь мне в этом новом вопросе.   -  person Rahul    schedule 31.07.2018