Отделом безопасности была поставлена задача сменить свой пароль на всех серверах Linux.
А серверов таких много, и заходить на каждый менять вручную не хочется. Поэтому я решил обратиться ChatGPT за скриптом, который будет менять пароль на всех серверах из моего списка. Это PowerShell скрипт, запускаемый с Windows машины:
# Установка модуля (если ещё не установлен) Install-Module -Name Posh-SSH -Scope CurrentUser Import-Module Posh-SSH $hostsFile = Join-Path $PSScriptRoot "hosts.txt" if (-not (Test-Path $hostsFile)) { Write-Error "Не найден файл hosts.txt по пути $hostsFile" exit 1 } $servers = Get-Content -LiteralPath $hostsFile $username = "youruser" $oldPass = "old_password" $newPass = "new_password" $secOld = ConvertTo-SecureString $oldPass -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential($username, $secOld) foreach ($server in $servers) { Write-Host "Подключение к ${server} …" try { $session = New-SSHSession -ComputerName $server -Credential $cred -AcceptKey $cmd = "printf '%s\n' $oldPass $newPass $newPass | passwd" $res = Invoke-SSHCommand -SessionId $session.SessionId -Command $cmd Write-Host "Результат на ${server}: $($res.Output)" } catch { Write-Warning "Ошибка на ${server}: $_" } finally { if ($session) { Remove-SSHSession -SessionId $session.SessionId } } }
Нужно изменить под себя вот эти переменные:
$username = "youruser"
$oldPass = "old_password"
$newPass = "new_password"
А файл hosts.txt наполнить списком своих серверов в таком виде:
server1
server2
192.168.0.10
server4.domain
Скрипт и файл hosts.txt должны лежать в одном каталоге.
Всё. После запуска скрипт пойдёт по серверам менять пароли:
Донаты принимаются на кошельки:
Yoomoney:
4100118091867315
Карта Т-Банк (бывший Тиньков):
2200 7017 2612 2077
Карта Альфа-Банк:
2200 1539 1357 2013