我在工作中(临时)有一个动态本地 LAN IP,但为了从家里连接,我通过 ssh 到主机 A(静态 IP),然后从那里连接到我的机器。
然而,由于 IP 发生变化,我想经常在主机 A 中保存,例如每次连接建立时(我经常由于电缆不良而失去以太网连接)。
我正在使用 NetowrkManager,因此我创建了一个文件,/etc/NetworkManager/dispatcher.d/90exportIP
其中运行以下命令:
ssh hostA "echo $(date) enp4s0f2 IP: $(/sbin/ifconfig enp4s0f2 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://') >> todaysElanIP";
这会获取我的 IP 并将其保存在todaysElanIP
主机 A 的文件中。
问题是这个脚本是以 root 身份运行的,而我的密钥不在那里。有时我只是在 bash 上运行这个命令,它就起作用了。但我希望它在每次网络启动时自动运行。
我尝试过runuser -l myUser
,但 ssh-agent 无法这样访问。
它不必每次都有效。例如,在启动时我还没有将密钥添加到 ssh-agent 中。如果下次网络出现故障然后再次出现时,会发生导出,这对我有用。
有点令人困惑的是,我如何能够轻松地使用非 root 用户执行某些操作,而且对于 root 用户来说似乎很难。