根据当前 ip 修改 ssh_config ip 地址

根据当前 ip 修改 ssh_config ip 地址

我希望能够根据我当前的 IP 地址修改 ssh_config 别名。

我有一台笔记本电脑,我会带着它从一个网络到另一个网络,还有一台相机,我会带着它做同样的事情。我在这些网络上设置了 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

答案1

由于您在 bashrc 中进行计算,因此您也可以使用 sed 从模板生成所需的 ssh_config。

模板(.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

答案2

我认为解决这个问题的方法是使用如下的模板配置文件。

〜/.ssh / config_模板

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.shbashrc文件中调用即可。请记住不要对进行任何手动更改ssh_config

相关内容