Я записал немного сценария, который позволяет мне соединяться два несколько серверов через SSHFS. Сценарий устанавливает переменные или вставляет значения по умолчанию, если ничто не вводится т.е. порт SSH 22.
Я хочу создать сценарий, который позволяет мне типу 1, 2, или 3, и подключение к
С основной целью быть, что я не должен указывать имя пользователя, пароль, имя сервера и т.д., каждый раз, я соединяюсь Через SSHFS.
Каков лучший способ структурировать это так, я не должен повторять свою строку SSHFS
Переменные подают эту строку.
sshfs -o allow_other,defer_permissions -o volname=$USER@$SERVERNAME $USER@$SERVERNAME:$REMOTEMOUNT $LOCALMOUNT -p$PORTNUMBER
Если я использую случай переключателя, делают я должен включать его в каждый случай переключателя или должен там некоторым образом структурировать его так, эта строка только включена однажды.
Прежде всего, не используйте $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