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

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


different:powershell_ssh_scp

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
different:powershell_ssh_scp [2024/08/19 14:14] 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
 $servers = @() $servers = @()
-$servers += @{ +$servers += @{name = 'adc01'ip = '192.168.124.11'
-    name = 'adc01' +$servers +@{name = 'adc02'; ip = '192.168.124.12'} 
-    ip = '192.168.124.11' +  
-+  
- +  
- +##touch this: 
-#$cred Get-Credential -Credential nsroot +#username:
-#$cred.Password | ConvertFrom-SecureString | Set-Content ./nsroot.txt +
- +
 $nsUser = "nsroot" $nsUser = "nsroot"
-$encryptedPass Get-Content ./nsroot.txt | ConvertTo-SecureString +  
-$cred = New-Object System.Management.Automation.PsCredential($nsUser, $encryptedPass) +#path to file contains encrypted pass: 
 +$credPath "./adcpasswd.txt
 +  
 +  
 + 
 $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 = "basic", "full" $backup_level = "basic", "full"
-$doFullBackup = $true #or $false +$encryptedPass Get-Content $credPath | ConvertTo-SecureString 
-$eraseBackup = $false +$cred New-Object System.Management.Automation.PsCredential($nsUser, $encryptedPass) 
 + 
 function remove_backup { function remove_backup {
     param (     param (
Строка 35: Строка 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) {
Строка 45: Строка 60:
     Remove-SSHSession -SessionId $sshSession.SessionId     Remove-SSHSession -SessionId $sshSession.SessionId
 } }
 + 
 function get_backup { function get_backup {
     param (     param (
Строка 65: Строка 80:
     return $result     return $result
 } }
 + 
 function create_backup { function create_backup {
     param (     param (
Строка 72: Строка 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
Строка 85: Строка 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.1724066048.txt.gz · Последнее изменение: 2024/12/21 19:00 (внешнее изменение)