Повторно использовать настройки сети Wi-Fi через различные Wi-Fi USB-ключи

У меня есть 3 USB- модуля odroid 4 USB-ключа (чипсет RT5572N), которые по разным причинам должны быть взаимозаменяемыми.

Я настроил все с одной, подключил к паре сетей Wi-Fi, и все в порядке. Я могу вытащить и вставить обратно ключ, и он автоматически подключится (я использую Ubuntu wily). Так что все хорошо.

Интересно, что если я подключу одну из других, она автоматически не подключится. Я должен вручную использовать nmcli для подключения к сети Wi-Fi и с тех пор, автоматическое подключение работает.

Таким образом, кажется, сети Wi-Fi связаны с MAC-адресом адаптера как-то. Как я могу скопировать настройки с одного ключа и убедиться, что все остальные будут работать?

1 ответ

Решение

Информация о подключении к Wi-Fi хранится в /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 {} \;

Наконец, перезапустите Network Manager:

service network-manager restart

и вы сделали.

Полное раскрытие:

  1. Я не могу проверить это, потому что у меня нет внешнего ключа Wi-Fi под рукой. Я протестировал очень похожую вещь, добавив новый профиль для моего единственного адаптера Wi-Fi, и это работает.
  2. Использование mktemp взломан Это может, предположительно, пойти не так и создать дубликат файла. Не будет, но мог бы. Более чистым способом было бы установить его tmpdir к местоположению оригинального файла, но он настолько запутывает сценарий, что я подумал, что лучше просто его обработать:-)
Другие вопросы по тегам