Я хочу создать следующий скрипт в .profile, чтобы каждый сеанс SSH проходил на своем месте:
- Проверьте указанный хост (user @ host).
- Если host = host1 - cd /var /www /site1
и т.п.
Помогите! :)
Я хочу создать следующий скрипт в .profile, чтобы каждый сеанс SSH проходил на своем месте:
и т.п.
Помогите! :)
Я почти уверен, что SSH не отправляет имя хоста на сервер (он просто использует его локально для поиска IP-адреса, проверки ключей и т.д.). По крайней мере, не таким образом, который может быть использован в сценарии оболочки.
Смотрите вывод env
- единственное имя хоста является каноническим, независимо от того, какое имя было использовано в команде ssh.
Некоторые клиенты SSH и некоторые серверы SSH позволяют клиенту указывать значение для одной или нескольких переменных среды, возможно, вы можете использовать это, чтобы сообщить серверу, на какой каталог переключаться. Например, см. Конфигурация замазки , соединение, данные или опция OpenSSH SendEnv .
В противном случае у вас есть один идентификатор пользователя для каждого веб-сайта с другим доменным именем, или вы должны предложить пользователю меню.
Ваш вопрос неясен: вы достигаете одного и того же хоста через несколько псевдонимов? Вы обращаетесь к различным хостам, которые используют .profile
? Вы пытаетесь выполнить команды на основе имени хоста источника или имен хоста назначения?
Если вы хотите иметь разные эффекты на разных удаленных хостах, просто проверьте имя удаленного хоста:
case "$(hostname)" in
host1) cd /var/www/site1;;
esac
Если вам нужны разные эффекты на одном и том же хосте, вы можете использовать директивы SendEnv
в ~/.ssh/config
для отправки переменных среды (при условии, что вы используете клиент OpenSSH ). Их необходимо включить с помощью директивы AcceptEnv
на стороне сервера, что часто не имеет место. Однако переменные LC_*
обычно разрешены, так что вы можете передавать информацию, используя их. На стороне клиента запустите LC_VIRTUAL_HOST=site1 ssh common-host.provider.com
. В вашем .profile
на сервере напишите
case "$LC_VIRTUAL_HOST" in
host1) cd /var/www/site1;;
esac