我有3个odroid wifi模块4个USB加密狗(RT5572N芯片组),出于各种原因,我需要可以互换。
我将所有设备设置为一个,并连接到几个wifi网络,一切都很好。我可以拔出并放回加密狗,它会自动重新连接(我使用Ubuntu wily)。一切都很好。
有趣的是,如果我插入其他一个,它会拒绝自动连接。我必须手动使用nmcli连接到wifi网络,然后自动连接才能正常工作。
因此,似乎wifi网络以某种方式绑定到了适配器的mac地址。如何从一个加密狗复制设置,并确保所有其他加密狗都能正常工作?
wifi连接信息存储在中/etc/NetworkManager/system-connections
。您可以添加一个新的(查看现有的语法很清楚)并重新启动Network Manager,它将出现。我们可以通过复制旧版本并更改uuid和MAC地址来创建新版本。
因此,以root用户身份将以下内容放入copyconnection.sh
:
#!/bin/bash
if (( $# < 1 )); then
exit 1
fi
# Parameter is the profile to copy
ORIG_PROFILE=$1
# Get the MAC address of wlan0
NEW_MAC=`ethtool -P wlan0 | cut -d " " -f 3 | tr [a-f] [A-F]`
# Copy the profile
SUFFIX=`mktemp -u XXXXXX`
NEW_PROFILE="${ORIG_PROFILE}.${SUFFIX}"
echo "Creating $NEW_PROFILE from $ORIG_PROFILE"
cp "$ORIG_PROFILE" "$NEW_PROFILE"
# We will need a new UUID line and a new MAC address line
NEW_UUID=`uuidgen`
NEW_UUID_LINE="uuid=$NEW_UUID"
NEW_MAC_LINE="mac-address=$NEW_MAC"
# Drop the lines in
sed -i "s/^uuid=.*$/$NEW_UUID_LINE/" "$NEW_PROFILE"
sed -i "s/^mac-address=.*$/$NEW_MAC_LINE/" "$NEW_PROFILE"
使它可执行
chmod +x copyconnection.sh
然后使用您的旧配置文件作为参数运行它
./copyconnection.sh /etc/NetworkManager/system-connections/MyHomeWifi
如果您想做很多事情:
find /etc/NetworkManager/system-connections/ -type f -exec copyconnection.sh {} \;
最后,重新启动网络管理器:
service network-manager restart
到此为止。
全面披露:
mktemp
hacky。可以想象,它可能会出错并产生重复文件。不会,但是可以。更干净的方法是将其设置tmpdir
为原始文件的位置,但是这样会使脚本混乱很多,我认为最好只附加它:-)本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句