获取centos7 ip的bash脚本

最近由于一个项目需要,写了一个获取centos7 ip的bash脚本,花了一两天的时间研究,记录下。

目录

查ip的方式:

查网卡名称

根据网卡名称获取 ip 地址

测试验证


  • 查ip的方式:

    在最小化装完centos系统后,系统能查询到ip的方式也就是 ip a



    根据网卡名称,可以判断出 ens32就是网卡名称,那么下面的 inet 192.168.18.122 也就是ip地址了,至于其他两个都是虚拟的网卡。
    所以可以根据网卡名称使用 ip a 命令来找到对应的 ip,下面说如何获取网卡名称。

  • 查网卡名称

      正常来说,配置网卡信息是在 /etc/sysconfig/network-scripts 目录下配置,上面截图中对应的网卡名称为:ifcfg-ens32,查看该文件:
      
     在这个文件里可以看到网卡名称是在文件里配置好的。
     在这个目录下 /sys/class/net 存储了所有网卡的名称,包括物理网卡和虚拟网卡:
     
    每个文件都是一个符号链接文件,根据最终指向的文件可以看出来,所有的虚拟网卡都在 /sys/devices/virtual/net/ 目录下。
    那么首先获取出所有的物理网卡名称:
   

ls /sys/class/net | grep -v "`ls /sys/devices/virtual/net/`"

  

  • 根据网卡名称获取 ip 地址

对于单网卡,上述命令获取到的网卡名称为一个名称,如果是多网卡,例如双网卡:

获取到的是两个物理网卡名,所以应该循环去找到每一个网卡对应的ip,脚本如下:
 

#!/bin/bash
# 获取ip地址
function getIP() {
    # /sys/class/net 目录下存储了所有网卡信息,子目录均为网卡名,
    # /sys/devices/virtual/net/ 目录下存储了所有的虚拟网卡名
    NETWORK_CARD_NAME=`ls /sys/class/net | grep -v "\`ls /sys/devices/virtual/net/\`"`
    for net_name in $NETWORK_CARD_NAME
    do
        possible_ip=`ip a | sed "/$net_name$/p" -n | awk '{print $2}'| awk -F/ '{print$1}'`
        if [ $possible_ip ]; then
            echo "ip为$possible_ip,网卡名称为$net_name"
        fi
    done
}
# 打印
for ip in `getIP`
do
    echo "$ip"
done
  • 测试验证

对于单网卡:

对于多网卡:

测试成功,可以获取到物理网卡的ip。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 7上配置SSH免密登录可以方便我们在服务器之间进行远程操作,提高效率。下面是一个实现CentOS 7 SSH免密登录的脚本: #!/bin/bash # 定义变量,替换为实际的IP地址和用户名 IP="服务器IP地址" USERNAME="用户名" # 配置本地SSH公钥 ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub $USERNAME@$IP # 修改目标服务器的SSH配置 ssh $USERNAME@$IP "sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config" ssh $USERNAME@$IP "systemctl restart sshd" 脚本中首先定义了IP地址和用户名的变量,可以根据实际情况进行修改。接着使用ssh-keygen命令生成本地的SSH公钥,并使用ssh-copy-id命令将公钥复制到目标服务器上。这样,在以后的登录过程中,就不再需要输入密码了。 最后,脚本通过SSH远程连接目标服务器,修改目标服务器的SSH配置文件,将密码登录方式改为非密码登录方式,然后重新启动SSH服务。这样,就完成了CentOS 7 SSH免密登录的配置。 使用该脚本的方法非常简单,只需要将IP地址和用户名替换为实际的值,然后使用bash命令执行脚本即可。在执行过程中,会提示输入密码和确认操作,按照提示操作即可完成配置。 需要注意的是,脚本执行过程中可能会涉及到sudo权限的问题,如果没有sudo权限,请确保已经以root用户登录。另外,脚本执行完成后,为了保证安全性,建议手动删除本地的SSH私钥(~/.ssh/id_rsa)和目标服务器上的SSH公钥(~/.ssh/authorized_keys)。 通过以上步骤,我们就可以在CentOS 7上配置SSH免密登录了,以后可以方便地进行远程操作,提高工作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值