Да - согласно документации - перетасовка файла на месте должна быть безопасной:
-o output-file
- output = output-file
Записать вывод в файл вывода вместо стандартного вывода.shuf
считывает весь ввод перед открытием файла вывода , поэтому вы можете безопасно перетасовать файл на месте, используя такие команды, какshuf -o F
и кот F | shuf -o F
.
Быстро взглянув на исходный код nmcli
( $ apt-get source network-manager
), можно увидеть структуру, содержащую информацию о точке доступа ( src/devices/wifi/ nm-wifi-ap.c
) хранится в энергозависимой памяти (я не уверен, распределена ли структура по распределению или статически, но я бы выбрал первое).
Структура такая (на самом деле их две):
typedef struct {
char *supplicant_path; /* D-Bus object path of this AP from wpa_supplicant */
/* Scanned or cached values */
GByteArray * ssid;
char * address;
NM80211Mode mode;
guint8 strength;
guint32 freq; /* Frequency in MHz; ie 2412 (== 2.412 GHz) */
guint32 max_bitrate; /* Maximum bitrate of the AP in Kbit/s (ie 54000 Kb/s == 54Mbit/s) */
NM80211ApFlags flags; /* General flags */
NM80211ApSecurityFlags wpa_flags; /* WPA-related flags */
NM80211ApSecurityFlags rsn_flags; /* RSN (WPA2) -related flags */
/* Non-scanned attributes */
bool fake:1; /* Whether or not the AP is from a scan */
bool hotspot:1; /* Whether the AP is a local device's hotspot network */
gint32 last_seen; /* Timestamp when the AP was seen lastly (obtained via nm_utils_get_monotonic_timestamp_s()) */
} NMWifiAPPrivate;
struct _NMWifiAP {
NMExportedObject parent;
NMWifiAPPrivate _priv;
};
Я не копал код глубоко, поэтому могу ошибаться, но я полагаю, что эта структура выделяется и выполняется, когда мы вызываем nmcli device wifi list
, а затем уничтожается при завершении команды. Возможно, есть более сложные функции, которые подразумевают «сохранение состояния» в каком-то файле или дампе памяти, но я не могу сказать прямо сейчас.
Не могу сказать про iwlist (код не смотрел).
Я бы разместил это как комментарий, так как на самом деле это не ответ, но он явно слишком длинный.
ОБНОВЛЕНИЕ
Глядя на страницу nmcli github , там говорится:
Демон NetworkManager работает как привилегированная служба (поскольку он должен аппаратное обеспечение доступа и управления), но обеспечивает интерфейс D-Bus на системная шина, позволяющая осуществлять детальное управление сетью. NetworkManager не хранит соединения или настройки, это только механизм, с помощью которого эти соединения выбираются и активируются.
Для хранения предопределенных сетевых подключений, двух отдельных служб, "служба системных настроек" и "служба пользовательских настроек" магазин информацию о подключении и предоставить ее NetworkManager, в том числе через D-шина.Каждая служба настроек может определить, как и где она постоянно сохраняет информацию о соединении; например, ГНОМ апплет хранит свою конфигурацию в GConf, а системные настройки сервис хранит свою конфигурацию в форматах, специфичных для дистрибутива, или в дистрибутиве. независимый формат, зависящий от предпочтений пользователя/администратора.