Массовая смена паролей в Ubiquiti устройствах

Часто возникает вопрос о смене паролей. Если при небольшом количестве устройств не составит труда изменить их вручную, то при количестве устройств более ста без автоматизации не обойтись. Первым делом необходимо получить список всех IP-адресов устройств. Здесь все зависит от вашей системы учета. При использовании aircontrol список всех IP можно получить выполнив следующую команду:

wget --header="Accept:text/tab-separated-values" "http://localhost:9080/api/devicegroup/All%20Devices?auth.user=ubnt&auth.password=ubnt" -O all.txt

После чего из полученного файла выбираем адреса:

cat ./all.txt |grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01][0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" > ./all_ip.txt

Формируем новый пароль который будет использоваться в нижеописанном скрипте:

openssl passwd -crypt -salt 'Sa' 'password'

И запускаем следующий скрипт:

#!/bin/bash IFS=$'\r\n' GLOBIGNORE='*' :; ar=($(cat ./all_ip.txt)) echo "${ar[0]}" for ip_ubnt in "${ar[@]}" do echo $ip_ubnt » ./out.txt sshpass -p 'старый пароль' ssh ubnt@$ip_ubnt -p 22 -oConnectTimeout=5 -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null "sed -i 's/users.1.password=.*/users.1 .password=новый_пароль/g' /tmp/system.cfg ;/usr/etc/rc.d/rc.softrestart save" &» ./out.txt done

После чего на ваших устройствах будет новый пароль