Инструменты пользователя

Инструменты сайта


different:powershell_ssh_scp

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
different:powershell_ssh_scp [2024/08/19 14:21] rootdifferent:powershell_ssh_scp [2024/12/21 19:00] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 ====== SCP/SSH Powershell password ====== ====== SCP/SSH Powershell password ======
-<code=powershell | download>+====== Установить модуль Posh-SSH ====== 
 +<code=powershell>
 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
 </code> </code>
-<code=powershell | download>+ 
 +====== Скрипт бэкапа ====== 
 +<code=powershell>
 Import-Module Posh-SSH Import-Module Posh-SSH
 + 
 #list of adcs #list of adcs
 $servers = @() $servers = @()
 $servers += @{name = 'adc01'; ip = '192.168.124.11'} $servers += @{name = 'adc01'; ip = '192.168.124.11'}
 $servers += @{name = 'adc02'; ip = '192.168.124.12'} $servers += @{name = 'adc02'; ip = '192.168.124.12'}
- +  
-##to make cred file +  
-#$cred = Get-Credential -Credential $nsUser + 
-#$cred.Password | ConvertFrom-SecureString | Set-Content $credPath +
- +
 ##touch this: ##touch this:
 #username: #username:
 $nsUser = "nsroot" $nsUser = "nsroot"
 + 
 #path to file contains encrypted pass: #path to file contains encrypted pass:
 $credPath = "./adcpasswd.txt" $credPath = "./adcpasswd.txt"
- +  
- +  
 + 
 $backupStorePath = "./" $backupStorePath = "./"
 $doFullBackup = $true #or $false $true - make full, $false - make basic $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 $eraseBackup = $false #or $true  $true - erase backup from adc after transfer, $false - leave backup on adc
- +  
- +  
-##to make cred file uncomment two strings below, after take it back: +##ask for creds if password file does not exist 
-#$cred = Get-Credential -Credential $nsUser +if ($(Test-Path -Path $credPath) -ne $true) { 
-#$cred.Password | ConvertFrom-SecureString | Set-Content $credPath +    $cred = Get-Credential -Credential $nsUser 
- +    $cred.Password | ConvertFrom-SecureString | Set-Content $credPath 
 +} 
 + 
 #do not touch that: #do not touch that:
 $backup_level = "basic", "full" $backup_level = "basic", "full"
 $encryptedPass = Get-Content $credPath | ConvertTo-SecureString $encryptedPass = Get-Content $credPath | ConvertTo-SecureString
 $cred = New-Object System.Management.Automation.PsCredential($nsUser, $encryptedPass) $cred = New-Object System.Management.Automation.PsCredential($nsUser, $encryptedPass)
 + 
 function remove_backup { function remove_backup {
     param (     param (
Строка 49: Строка 50:
     $sshCommand = "rm system backup " + $backupName +".tgz"     $sshCommand = "rm system backup " + $backupName +".tgz"
     Write-Host($sshCommand)     Write-Host($sshCommand)
-    $sshSession = New-SSHSession -ComputerName $server.ip -Credential $cred -AcceptKey+    $sshSession = New-SSHSession -ComputerName $server.ip -Credential $cred -AcceptKey -Force
     $result = Invoke-SSHCommand -Command $sshCommand -SSHSession $sshSession     $result = Invoke-SSHCommand -Command $sshCommand -SSHSession $sshSession
     if ($result.ExitStatus -eq 0) {     if ($result.ExitStatus -eq 0) {
Строка 59: Строка 60:
     Remove-SSHSession -SessionId $sshSession.SessionId     Remove-SSHSession -SessionId $sshSession.SessionId
 } }
 + 
 function get_backup { function get_backup {
     param (     param (
Строка 79: Строка 80:
     return $result     return $result
 } }
 + 
 function create_backup { function create_backup {
     param (     param (
Строка 86: Строка 87:
         $erase = $false         $erase = $false
     )     )
- +  
-    $backup_name_pattern = $server.name + "_" + $(get-date -format "yyyy_MM_dd")+    $backup_name_pattern = $server.name+ "_" + $backup_level[$doFullBackup]  + "_" + $(get-date -format "yyyy_MM_dd")
     Write-Host($server.name,$backup_name_pattern,$backup_level[$doFullBackup], $erase)     Write-Host($server.name,$backup_name_pattern,$backup_level[$doFullBackup], $erase)
-    $sshCommand = "create system backup " + $backup_name_pattern +" -level " + $backup_level[$doFullBackup] +    $sshCommands = @() 
-    #Write-Host($sshCommand)+    $sshCommands += "set HA node -haSync DISABLED -haProp DISABLED" #0 
 +    $sshCommands += "save ns config" #1 
 +    $sshCommands += "create system backup " + $backup_name_pattern +" -level " + $backup_level[$doFullBackup] #2 
 +    $sshCommands += "set HA node -haSync ENABLED -haProp ENABLED" #3 
 +    $sshCommands += "save ns config" #4
     $sshSession = New-SSHSession -ComputerName $server.ip -Credential $cred -AcceptKey     $sshSession = New-SSHSession -ComputerName $server.ip -Credential $cred -AcceptKey
-    $result = Invoke-SSHCommand -Command $sshCommand -SSHSession $sshSession+    Invoke-SSHCommand -Command $sshCommands[0] -SSHSession $sshSession 
 +    Invoke-SSHCommand -Command $sshCommands[1] -SSHSession $sshSession 
 +    $result = Invoke-SSHCommand -Command $sshCommands[2] -SSHSession $sshSession
     if ($result.ExitStatus -eq 0) {     if ($result.ExitStatus -eq 0) {
         $result = get_backup -server $server -backupName $backup_name_pattern -destinationPath $backupStorePath -erase $erase         $result = get_backup -server $server -backupName $backup_name_pattern -destinationPath $backupStorePath -erase $erase
Строка 99: Строка 106:
         Write-Host($result.Host, $result.Output)         Write-Host($result.Host, $result.Output)
     }     }
 +    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 -erase $eraseBackup     create_backup -server $server -doFullBackup $doFullBackup -erase $eraseBackup
 } }
 </code> </code>
different/powershell_ssh_scp.1724066518.txt.gz · Последнее изменение: 2024/12/21 19:00 (внешнее изменение)