Angel2S2
@Angel2S2
пингвинёнок

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

Добрый день, коллеги.

Подключаясь к некоторым серверам, я первым делом выполняю команду
sudo screen -xR admin_name -c /root/.screenrc_admin_name
чтобы использовать мой конфиг для screen, который уже подтягивает мой bashrc и чтобы мой конфиг не мешал коллегам. Это не очень удобно. Каждый раз вводить
ssh server1 "sudo screen -xR admin_name -c /root/.screenrc_admin_name"
Тоже не хочется. Хочется сделать так, чтобы эта команда выполнялась автоматически. Но вот как это реализовать?

Вариант 1. Прописать в ~/.ssh/authorized_keys на всех серверах
command="sudo screen -xR admin_name -c /root/.screenrc_admin_name" ssh-rsa ....
не подходит, т.к. после этого перестает работать scp и т.п. Да и неудобно, если серверов много.

Вариант 2. Использовать конфиг ~/.ssh/config
Я не нашел варианта. Хотя, в идеале, хочется реализовать это через него.

Вариант 3. Сделать алиас
alias server23='ssh user@server23 "sudo screen -xR admin_name -c /root/.screenrc_admin_name"'
Тоже не вариант. Лично мне не удобно вводить просто имя сервера. Привычка писать "ssh server1" (все сервера внесены в ~/.ssh/config).

Вариант 4. Сделать функцию в ~/.bashrc
ssh() {
  ssh "$1" -F ~/.ssh/config "sudo screen -xR admin_name -c /root/.screenrc_admin_name"
}
Это вариант. На данный момент так и сделано.

Но может есть другой, более правильный способ?

PS: Авторизуюсь на серверах по ключам (на всякий).
  • Вопрос задан
  • 731 просмотр
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
В принципе вы можете попробовать в .bashrc добавить проверку на IP клиента, раз вы все время с вашего компа заходите.

Берете $SSH_CLIENT переменную, отрезаете первый столбец, сравниваете его с IP вашего компа. Если совпало - значит это подключились именно вы, и можно врубать ваши конфиги.
CLIENT_IP="${SSH_CLIENT%% *}"
if [[ "$SSH_CLIENT" == "10.20.30.40" ]]; then
  source ~/.bashrc_Angel2S2
fi


Таким образом ваши настройки не будут подгружаться у коллег, и .bashrc не ломает scp.
Ну и можно несколько ваших машин перечислить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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