永发信息网

请教Linux SHELL 问题,我想自动绑定arp 缓存列表中MAC 地址。

答案:3  悬赏:40  手机版
解决时间 2021-02-23 04:05
  • 提问者网友:自食苦果
  • 2021-02-22 03:25
#!/bin/bash
#mac-arp manger
for i in `/sbin/arp -vn -i eth0 | awk '{print $1,$3}' | grep -v "^E" | grep -v "^A"`
do
/sbin/arp -s $i
done

以上是失败 SHELL,求解!
最佳答案
  • 五星知识达人网友:煞尾
  • 2021-02-22 04:02
主要是ip地址和mac地址被当成两个i变量了。按下面这么改应该可以,但没有测试过。
#!/bin/bash
#mac-arp manger
for i in `/sbin/arp -vn -i eth0 | awk '{print $1,$3}' | grep -v "^E" | grep -v "^A"`
do
if echo $i|grep -q ":"
then
/sbin/arp -s $var $i
else
var=$i
fi
done
全部回答
  • 1楼网友:摆渡翁
  • 2021-02-22 06:19
失败的原因在 /sbin/arp -s $i arp进行绑定时需要两个参数, 如arp -s IP MACADDR 你把两个参数放入一个变量$i中, SHELL只会把它解释为一个参数, 要达到你的目的 将 /sbin/arp -s $i 更改为 eval /sbin/arp -s $i 这样作的原理: 首先将$i 替换为IP MACADDR, eval的作用就是在SHELL环境中执行后面的命令行。这样就可以了。 这个样子你理解了吧
  • 2楼网友:琴狂剑也妄
  • 2021-02-22 05:19
失败的原因在 /sbin/arp -s $i arp进行绑定时需要两个参数, 如arp -s IP MACADDR 你把两个参数放入一个变量$i中, SHELL只会把它解释为一个参数, 要达到你的目的 将 /sbin/arp -s $i 更改为 eval /sbin/arp -s $i 这样作的原理: 首先将$i 替换为IP MACADDR, eval的作用就是在SHELL环境中执行后面的命令行。这样就可以了。 这个样子你理解了吧 再看看别人怎么说的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯