每次连接建立时将 IP 保存在远程主机中(作为非 root 用户)

每次连接建立时将 IP 保存在远程主机中(作为非 root 用户)

我在工作中(临时)有一个动态本地 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 用户来说似乎很难。

相关内容