У меня есть 3 odroid модуля Wi-Fi 4 аппаратных ключа usb (чипсет RT5572N), что по различным причинам я должен быть взаимозаменяемым.
Я настроил все с одним, подключенным к паре сетей Wi-Fi, и все в порядке. Я могу выйти из дела и возвратиться в аппаратном ключе, и он автоматически снова соединится (Im с помощью коварной Ubuntu). Так вся польза.
Интересно, если я включаю одного из других, он отказывается автоматически соединяться. Я должен вручную использовать nmcli для соединения с сетью Wi-Fi и с тех пор, автоматические работы подключения.
Таким образом, кажется, что сети Wi-Fi связываются с MAC-адресом адаптера так или иначе. Как я могу скопировать свою установку с одного аппаратного ключа и удостовериться все, что другие будут просто работать?
Информация о соединении Wi-Fi хранится в /etc/NetworkManager/system-connections
. Можно добавить новый (синтаксис ясен из рассмотрения существующего), и Администратор сети перезапуска, и это появится. Мы можем создать новый путем копирования старого и изменения uuid и MAC-адреса.
Так, работая корнем, помещает следующее в, скажем, 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
на местоположение исходного файла, но это загромождает сценарий так, я думал это лучше только к крылу это :-)