Я хотел бы иметь возможность изменять псевдонимы ssh_config на основе моего текущего IP-адреса.

У меня есть ноутбук, который я ношу с собой из сети в сеть, и камера, с которой я делаю то же самое. Я настроил dhcp в этих сетях, чтобы камера всегда давала один и тот же IP-адрес, и я вычисляю, каким он должен быть в моем bashrc, и помещаю IP-адрес камеры в переменную окружения.

Есть ли способ сделать что-то вроде следующего внутри ~/.ssh/config:

Host camera
    HostName $CAMERA_IP
    User camuser

Вышесказанное не работает, так как ssh жалуется:

ssh: Could not resolve hostname $CAMERA_IP: Name or service not known

2 ответа2

2

Поскольку вы выполняете вычисления в своем bashrc, вы также можете сгенерировать нужный вам ssh_config из шаблона, используя sed.

Шаблон (.ssh/ssh_config_t):

Host camera
    Hostname IP_PH
    user camuser

Скрипт в bashrc

sed -e "s/IP_PH/$CAMERA_IP/" ~/.ssh/ssh_config_t > ~/.ssh/ssh_config
0

Я думаю, что я бы решил это, используя файл конфигурации шаблона следующим образом.

~/.ssh/config_template:

Host camera
    HostName $CAMERA_IP
    User camuser

А потом простой скрипт обновления.

~/.ssh/update_config.sh:

#!/bin/bash

# Do whatever to set $CAMERA_IP
CAMERA_IP=192.168.1.1

# Update config file
sed "s/\$CAMERA_IP/$CAMERA_IP/" ~/.ssh/config_template > ~/.ssh/config

А затем просто вызовите ~/.ssh/update_config.sh из вашего файла bashrc . Просто помните, чтобы не вносить никаких изменений в ssh_config .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .