diff options
author | David Oberhollenzer <david.oberhollenzer@tele2.at> | 2018-11-05 15:28:18 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@tele2.at> | 2018-11-05 16:11:47 +0100 |
commit | 021fa432447bd7b447ca39738040698db39d751b (patch) | |
tree | 66c0e46dfd952ce6de6043916f3eb9e2d92e62e2 /scripts/ifrename.sh.in |
Initial commitv1
Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
Diffstat (limited to 'scripts/ifrename.sh.in')
-rwxr-xr-x | scripts/ifrename.sh.in | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/scripts/ifrename.sh.in b/scripts/ifrename.sh.in new file mode 100755 index 0000000..0820c94 --- /dev/null +++ b/scripts/ifrename.sh.in @@ -0,0 +1,47 @@ +#!/bin/sh +NAMERULES="@ETCPATH@/netcfg/ifrename" +TMPPATH="/tmp/ifrename" + +[ -f "$NAMERULES" ] || exit 0 + +mkdir -p "$TMPPATH" + +for IFPATH in /sys/class/net/*; do + [ "$IFPATH" == "/sys/class/net/lo" ] && continue + + IF=`basename $IFPATH` + MAC=`cat $IFPATH/address` + + grep "^[^,]\+,[^,]\+,[a-zA-Z0-9]\+$" $NAMERULES | while read LINE; + do + NAMECMP=$(echo $LINE | cut -d',' -f1) + ADDRCMP=$(echo $LINE | cut -d',' -f2) + RULE=$(echo $LINE | cut -d',' -f3) + + case $IF in ($NAMECMP) ;; *) continue;; esac + case $MAC in ($ADDRCMP) ;; *) continue;; esac + + echo "$MAC,$IF" >> "$TMPPATH/$RULE" + break + done +done + +for FNAME in $TMPPATH/*; do + [ ! -f "$FNAME" ] && break + + IDX=0 + PREFIX=$(basename $FNAME) + + sort -t',' -k1 -u $FNAME | while read LINE; + do + OLDNAME=$(echo $LINE | cut -d',' -f2) + NEWNAME="$PREFIX$IDX" + IDX=`expr $IDX + 1` + + ip link set "$OLDNAME" name "$NEWNAME" + done + + rm "$FNAME" +done + +rmdir "$TMPPATH" |