Как передать несколько аргументов через ssh и использовать эти аргументы в сценарии ssh?

Я пытаюсь выполнить файл сценария sc.sh на удаленном компьютере user @ remote-01 с помощью ssh . Мне также нужно передать аргументы при выполнении этой команды ssh. Так что я должен использовать эти аргументы в sc.sh. Это мой сценарий, который я пытаюсь выполнить

var1=True var2=False var3=True sshpass -p 'pswd' ssh user@remote-01 "bash -s" < /home/user/sc.sh 

Мой sc.sh выглядит так:

  if var1 -eq True; then echo "Todo" fi if var2 -eq True; then echo "Todo" fi if var3 -eq True; then echo "Todo" fi ..... so on 

Как передать var1, var2, var3 в качестве аргументов и использовать их в моем скрипте, как указано выше?

3 Solutions collect form web for “Как передать несколько аргументов через ssh и использовать эти аргументы в сценарии ssh?”

Об этом ранее сообщалось.

однако то, что вы хотели бы, вероятно, сделать, будет следующим:

sc.sh

 #!/bin/bash var1=$1 var2=$2 var3=$3 if $var1 -eq True; then echo "Todo1" fi if $var2 -eq True; then echo "Todo2" fi if $var3 -eq True; then echo "Todo3" fi 

затем выполните следующую команду

ssh user@remote-01 'bash -s' < test.sh true true true

аргументы в BASH могут ссылаться на $ number, например, $ 1

Наконец, получил решение, попробовав много попыток и ошибок.

  var1="True" var2="False" var3="True" sshpass -p 'pswd' ssh user@remote-01 "bash -s" < /home/user/sc.sh "$var1 $var2 $var3" 

И следует использовать в sc.sh

 if [ "$1" = "True" ]; then echo "Todo" fi if [ "$2" = "False" ]; then echo "Todo" fi if [ "$3" = "True" ]; then echo "Todo" fi 

Здесь мы передаем переменные var1 / var2 / var3 как env-переменные в командной строке ssh которые затем становятся доступными для кода bash на remote m / c.

 var1="$var1" var2="$var2" var3="$var3" \ sshpass -p 'pswd' ssh user@remote-01 "bash -s" < /home/user/sc.sh 

Содержимое sc.sh будет:

 if [ "$var1" = True ]; then echo "Todo" fi if [ "$var2" = True ]; then echo "Todo" fi if [ "$var3" = True ]; then echo "Todo" fi ..... so on 
  • Ошибка OBS при попытке захвата окон
  • RDP автоматически вводит командную строку
  • Возможно ли обновить Linux Mint 13 до 18?
  • Насколько близок cdebconf в качестве замены для debconf?
  • Где находится frame.h в современных реализациях Linux? (специально для ubuntu)
  • Следующие версии LTS Ubuntu основаны на реальной тестовой версии Debian
  • Samba разрешает доступ к файлам файлов - пользователи не могут открывать файлы, которые я создаю
  • Переносная загрузочная установка Ubuntu, синхронизированная с моим основным компьютером
  • Ubuntu - на устройстве нет места (NTFS)
  • Linux, отключить / dev / fd0 (гибкий диск)
  • iptables --set-mark - Проложить разные порты через разные интерфейсы
  • Linux и Unix - лучшая ОС в мире.