📜  为本地机器 ubuntu 上的 ips 命名 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:21:38.025000             🧑  作者: Mango

为本地机器 Ubuntu 上的IP地址命名 - Shell/Bash

当你在 Ubuntu 终端上工作时,碰到一台有多个 IP 地址的机器,你是否希望有一个简单而易于记忆的方式来引用它们?那么,你可以使用 Shell/Bash 脚本为这些本地机器上的 IP 地址重新命名。

实现方法

首先,通过以下命令获取本地机器的 IP 地址列表:

ifconfig | grep 'inet addr:' | awk '{print $2}' | awk -F ':' '{print $2}'

该命令使用管道来将 ifconfig 命令的输出传递给 grep 命令,以过滤出包含inet addr:的行。接着,该命令使用 awk 命令从过滤后的行中提取 IP 地址。最后,使用 awk 命令去掉 IP 地址中的冒号。

输出结果应如下所示:

127.0.0.1
192.168.1.103

然后,我们可以将这些 IP 地址与我们为它们命名的名称存储在一个名为ips的数组中,如下所示:

ips=(["hub"]="127.0.0.1" ["laptop"]="192.168.1.103")

在这个示例中,我们为本机命名为“hub”,192.168.1.103 命名为“laptop”。

现在,让我们使用以下 Bash 函数为这些机器上的 IP 地址重新命名:

nickip () {
  if [ ! -z $1 ] && [ ! -z $2 ]; then
    sudo -- sh -c "echo $2 > /etc/hosts.d/$1"
    echo "$1 is now $2!"
  else
    echo "usage: nickip <nickname> <ip_address>"
  fi
}

该函数需要两个参数:nicknameip_address。它会将 ip_address 写入到/etc/hosts.d/nickname文件中,以将 nicknameip_address 相关联。然后,它会输出“nickname is now ip_address!”的消息来确认新的映射关系。

你可以调用该函数并传递两个参数来为本机添加新的映射关系,如下所示:

nickip laptop 192.168.1.103

在上面的示例中,我们将 192.168.1.103 与名称 “laptop” 相关联。

最后,你可以使用以下 Bash 函数来获取机器的名称,如下所示:

getname () {
  ip=$1
  if [ -z $ip ]; then echo "usage: getname <ip>"; return 1; fi
  for i in ${!ips[@]}; do
    if [ "${ips[$i]}" == "$ip" ]; then
      echo $i
      return 0
    fi
  done
  echo "no name found"
  return 1
}

该函数需要一个参数:ip。它会在 ips 数组中搜索相应的 IP 地址,并返回关联的名称。

你可以调用该函数并传递一个参数来获取某个 IP 地址的名称,如下所示:

getname 192.168.1.103

如果该 IP 地址与数组ips中的某个名称关联,则该函数将返回该名称。

总结

在本文中,我们演示了如何使用 Bash 脚本为 Ubuntu 机器上的 IP 地址重新命名。通过掌握上述这些技巧,你将能够更轻松地管理你的本地网络。