different:powershell_ssh_scp
Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
different:powershell_ssh_scp [2024/08/19 12:02] – создано root | different:powershell_ssh_scp [2024/12/21 19:00] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== SCP/SSH Powershell password ====== | ====== SCP/SSH Powershell password ====== | ||
- | < | + | ====== Установить модуль Posh-SSH ====== |
+ | < | ||
Import-Module PowershellGet | Import-Module PowershellGet | ||
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned #Yes | Set-ExecutionPolicy -ExecutionPolicy RemoteSigned #Yes | ||
Install-Module Posh-SSH #Yes | Install-Module Posh-SSH #Yes | ||
</ | </ | ||
- | < | + | |
+ | ====== Скрипт бэкапа ====== | ||
+ | < | ||
Import-Module Posh-SSH | Import-Module Posh-SSH | ||
+ | |||
+ | #list of adcs | ||
$servers = @() | $servers = @() | ||
- | $servers += @{ | + | $servers += @{name = ' |
- | | + | $servers += @{name = ' |
- | | + | |
- | } | + | |
- | + | ||
- | + | ##touch this: | |
- | #$cred = Get-Credential -Credential nsroot | + | #username: |
- | #$cred.Password | ConvertFrom-SecureString | Set-Content | + | |
- | + | ||
$nsUser = " | $nsUser = " | ||
- | $encryptedPass | + | |
- | $cred = New-Object System.Management.Automation.PsCredential($nsUser, | + | #path to file contains encrypted pass: |
+ | $credPath | ||
+ | |||
+ | |||
+ | |||
$backupStorePath = " | $backupStorePath = " | ||
+ | $doFullBackup = $true #or $false $true - make full, $false - make basic | ||
+ | $eraseBackup = $false #or $true $true - erase backup from adc after transfer, $false - leave backup on adc | ||
+ | |||
+ | |||
+ | ##ask for creds if password file does not exist | ||
+ | if ($(Test-Path -Path $credPath) -ne $true) { | ||
+ | $cred = Get-Credential -Credential $nsUser | ||
+ | $cred.Password | ConvertFrom-SecureString | Set-Content $credPath | ||
+ | } | ||
+ | |||
+ | #do not touch that: | ||
$backup_level = " | $backup_level = " | ||
- | $doFullBackup | + | $encryptedPass |
- | + | $cred = New-Object System.Management.Automation.PsCredential($nsUser, | |
- | + | ||
+ | function remove_backup { | ||
+ | param ( | ||
+ | $server, | ||
+ | $backupName | ||
+ | ) | ||
+ | $sshCommand = "rm system backup " + $backupName +" | ||
+ | Write-Host($sshCommand) | ||
+ | $sshSession = New-SSHSession -ComputerName $server.ip -Credential $cred -AcceptKey -Force | ||
+ | $result = Invoke-SSHCommand -Command $sshCommand -SSHSession $sshSession | ||
+ | if ($result.ExitStatus -eq 0) { | ||
+ | Write-Host(" | ||
+ | } | ||
+ | else { | ||
+ | Write-Host($result.Host, | ||
+ | } | ||
+ | Remove-SSHSession -SessionId $sshSession.SessionId | ||
+ | } | ||
+ | |||
function get_backup { | function get_backup { | ||
param ( | param ( | ||
+ | $server, | ||
$backupName, | $backupName, | ||
- | $destinationPath = " | + | $destinationPath = " |
+ | $erase | ||
) | ) | ||
$backup_file_path = "/ | $backup_file_path = "/ | ||
Строка 41: | Строка 75: | ||
-Path $backup_file_path ` | -Path $backup_file_path ` | ||
-PathType File ` | -PathType File ` | ||
- | -Destination $destinationPath | + | -Destination $destinationPath |
+ | -Force | ||
+ | if ($erase -eq $true){remove_backup -server $server -backupName $backupName} | ||
return $result | return $result | ||
} | } | ||
+ | |||
function create_backup { | function create_backup { | ||
param ( | param ( | ||
$server, | $server, | ||
- | $doFullBackup = $True | + | $doFullBackup = $true, |
+ | $erase = $false | ||
) | ) | ||
- | + | ||
- | $backup_name_pattern = " | + | $backup_name_pattern = $server.name+ " |
- | Write-Host($server.name, | + | Write-Host($server.name, |
- | $sshCommand | + | $sshCommands = @() |
- | | + | $sshCommands += "set HA node -haSync DISABLED -haProp DISABLED" |
+ | $sshCommands += "save ns config" | ||
+ | $sshCommands += " | ||
+ | | ||
+ | | ||
$sshSession = New-SSHSession -ComputerName $server.ip -Credential $cred -AcceptKey | $sshSession = New-SSHSession -ComputerName $server.ip -Credential $cred -AcceptKey | ||
- | $result = Invoke-SSHCommand -Command $sshCommand | + | |
+ | Invoke-SSHCommand -Command $sshCommands[1] -SSHSession $sshSession | ||
+ | | ||
if ($result.ExitStatus -eq 0) { | if ($result.ExitStatus -eq 0) { | ||
- | $result = get_backup -backupName $backup_name_pattern -destinationPath $backupStorePath | + | $result = get_backup |
} | } | ||
else { | else { | ||
Write-Host($result.Host, | Write-Host($result.Host, | ||
} | } | ||
+ | Invoke-SSHCommand -Command $sshCommands[3] -SSHSession $sshSession - | ||
+ | Invoke-SSHCommand -Command $sshCommands[4] -SSHSession $sshSession | ||
Remove-SSHSession -SessionId $sshSession.SessionId | Remove-SSHSession -SessionId $sshSession.SessionId | ||
} | } | ||
- | + | ||
- | + | ||
+ | |||
foreach ($server in $servers) { | foreach ($server in $servers) { | ||
- | create_backup -server $server -doFullBackup $doFullBackup | + | create_backup -server $server -doFullBackup $doFullBackup |
} | } | ||
</ | </ |
different/powershell_ssh_scp.1724058151.txt.gz · Последнее изменение: 2024/12/21 19:00 (внешнее изменение)