Избиение сценария в рамках сценария

Я записал немного сценария, который позволяет мне соединяться два несколько серверов через SSHFS. Сценарий устанавливает переменные или вставляет значения по умолчанию, если ничто не вводится т.е. порт SSH 22.

Я хочу создать сценарий, который позволяет мне типу 1, 2, или 3, и подключение к

  1. Сценарий SSHFS, где я ввел переменные
  2. Сервер SSHFS 1
  3. Сервер SSHFS 2

С основной целью быть, что я не должен указывать имя пользователя, пароль, имя сервера и т.д., каждый раз, я соединяюсь Через SSHFS.

Каков лучший способ структурировать это так, я не должен повторять свою строку SSHFS

Переменные подают эту строку.

sshfs -o allow_other,defer_permissions -o volname=$USER@$SERVERNAME $USER@$SERVERNAME:$REMOTEMOUNT $LOCALMOUNT -p$PORTNUMBER

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

1
задан 13 January 2017 в 20:03

1 ответ

Прежде всего, не используйте $USER. Это переменная среды по умолчанию, которая содержит имя пользователя текущего пользователя. Если имя пользователя одинаково на всех серверах и на машине, на которой вы запускаете скрипт, тогда все в порядке. Но если нет, используйте другое имя. В общем, избегайте использования имен переменных UPPER CASE в bash, поскольку зарезервированные по умолчанию все они пишутся с большой буквы.

Тем не менее, вы можете сделать что-то вроде этого:

#!/bin/sh
case $1 in
    1)
        user="user1"
        servername="server1"
        remotemount="remote1"
        localmount="local1"
        portnumber="port1"
        ;;
    2)
        user="user2"
        servername="server2"
        remotemount="remote2"
        localmount="local2"
        portnumber="port2"
        ;;
    3)
        user="user3"
        servername="server3"
        remotemount="remote3"
        localmount="local3"
        portnumber="port3"
        ;;
    *)
        echo "Please use 1, 2 or 3"
        exit 1
        ;;
esac

echo sshfs -o allow_other,defer_permissions -o volname=$user@$servername $user@$servername:$remotemount $localmount -p$portnumber

Затем вы запустите свой скрипт, давая 1, 2 или 3 в качестве параметра:

foo.sh 2
2
ответ дан 7 December 2019 в 13:38

Другие вопросы по тегам:

Похожие вопросы: