我必须从其配置文件中获取网络设备的主机名。该文件如下所示:
...
hostname=T14Z18
ipaddress=192.168.0.1
...
如何做到这一点?我正在通过 ssh 进入机器。
最佳答案
像这样使用 grep
和 cut
:
$ grep '^hostname=' configfile | cut -d= -f2
T14Z18
您还可以将上述内容与 Bash
中的 ssh
命令结合使用:
$ ssh "$(grep '^hostname=' configfile | cut -d= -f2)"
$(
和 )
之间的所有内容都将替换为括号内命令的输出,因此它与键入 ssh T14Z18 相同
手动。
此功能称为 command
substitution
在 Bash
中。
另请注意,您可能使用的 OpenSSH
有其自己的配置
存储在 ~/.ssh/config
中,您可以使用它来创建别名。为了
例如,以下条目创建一个名为 rpi
的别名:
Host rpi
User pi
Hostname 192.168.1.161
您现在只需执行 ssh rpi
即可找到用户和主机名
由 OpenSSH
客户端自动执行。如果您的网络中有 DNS
服务器,您当然可以使用主机名,例如示例中的 T14Z18,而不是 IP 地址。
关于Bash 获取字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49221724/