如何在不知道当前设备的情况下即时更改IP

时间:2014-07-15 08:46:48

标签: linux networking archlinux

我在ArchLinux上,我希望在当前连接的IP地址即时更改(不配置文件更改)。 命令:

ip addr add 192.168.1.57 dev wlan0

似乎很好,但我不知道当前的设备(wlan0,eth0)。

我需要从启动脚本执行此操作。我不能手动检查当前使用的设备是什么。

有人会对我有所了解吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

ip link show

为您提供接口列表及其状态:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: wlp6s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
25: enp0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

您只需要检查哪一个state UP(如果是以太网,则表示电缆已连接,对于无线,则表示网络已关联)。在shell中,你会这样做:

interface="`ip link show | awk '/state UP/ { gsub(/:/, "", $2); print $2; exit }'`"
ip addr add 192.168.1.57 dev "$interface"

答案 1 :(得分:0)

我在我的个人资料/ etc / netctl上使用过“ExecUpPost”,就像那样:

ExecUpPost='ip addr add $(</var/varIP) dev wlan0 || true'

因为我知道每个profil上的设备......但我无法动态控制配置更改(/ var / varIP)。

drinkcat answere允许更多的灵活性。感谢。