我希望能够根据我当前的 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.sh
从bashrc
文件中调用即可。请记住不要对进行任何手动更改ssh_config
。