Question Script PS sauvegarde Cisco / Small Business
- Odric
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 10 ans 2 mois #21210
par Odric
Script PS sauvegarde Cisco / Small Business a été créé par Odric
Bonjour à tous,
Depuis quelques temps je travail sur un moyen de sauvegarder les actifs réseaux de mon parc.
Je viens de faire un script avec POSH-SSH mais j'ai quelques erreurs.
Voici le script :
[code:1]#################################################################################################
# Author: Odric #
# Requirements: Powershell 3.0, Posh-SSH module #
# For install POSH-SSH go to : github.com/darkoperator/Posh-SSH #
# Installation : #
# Accept external scripting (Set-ExecutionPolicy Unrestricted) #
#################################################################################################
# Download and Install :
# iex (New-Object Net.WebClient).DownloadString(\"gist.github.com/darkoperator/6152630/raw...poshsshdev\"«») #
# 10.1.2.3 = serv and tftp server
#Static folders
$Dossier_save = \"\\serv\c$\tftp\"
$Dossier_save_change = \"\\serv\c$\tftp\change\"
$Dossier_save_temp = \"\\serv\c$\tftp\temp\"
#Import of CSV File (Cisco SW and SmallBusiness SW List)
$CSV = Import-Csv -Path \"$Dossier_save\liste_sw.csv\" -Delimiter \";\"
#Loop Begin
Foreach ($Commu in $CSV) {
$ipaddress = $Commu.switchip
$username = $Commu.user
$password = $Commu.pass
$modele = $Commu.modele
$date = Get-Date -Format \"yyyy-MM-dd\"
#Test Connection to Switch
if (Test-Connection $ipaddress -Count 5 -Quiet) {
#Create string for password security check on cisco
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr
New-SSHSession -ComputerName $ipaddress -Credential $cred
$session = Get-SSHSession -Index 0
$stream = $session.Session.CreateShellStream(\"dumb\", 0, 0, 0, 0, 1000)
if ($modele -eq \"sb\"«») {
Write-Host \"Small Business\"
$stream.Write(\"cisco`n\"«»)
$stream.Write(\"$password`n\"«»)
$stream.WriteLine(\"copy startup-config tftp://10.1.2.3/temp/$ipaddress.startup-config\"«»)
Write-Host \"Fin Small Business\"
Test-Connection $ipaddress -Count 3 -Quiet
Remove-SSHSession -Index 0
}
if ($modele -eq \"cisco\"«») {
Write-Host \"Cisco\"
$stream.WriteLine(\"terminal len 0\"«»)
$stream.WriteLine(\"configure terminal\"«»)
$stream.WriteLine(\"file prompt quiet\"«»)
$stream.WriteLine(\"exit\"«»)
$stream.WriteLine(\"copy startup-config tftp://10.1.2.3/temp/$ipaddress.startup-config\"«»)
$stream.WriteLine(\"clear ip arp 10.1.2.3\"«»)
$stream.WriteLine(\"exit\"«»)
Write-Host \"Fin Cisco\"
Test-Connection $ipaddress -Count 3 -Quiet
Remove-SSHSession -Index 0
Write-Host \"Fin SSH $ipaddress\"
}
Write-Host \"Récuperation de la sortie\"
$Sortie = \"$Dossier_save_temp\$ipaddress.startup-config\"
Get-Content $Sortie | Out-File $Dossier_save_temp\tempactu.txt
if (Test-Path -Path \"$Dossier_save\$ipaddress.startup-config\"«») {
Get-Content \"$Dossier_save\$ipaddress.startup-config\" | Out-File $Dossier_save_temp\tempdiff.txt
$conf_actu_rev = Get-Content $Dossier_save_temp\tempactu.txt
$conf_diff_rev = Get-Content $Dossier_save_temp\tempdiff.txt
if (Compare-Object -ReferenceObject $conf_actu_rev -DifferenceObject $conf_diff_rev) {
Move-Item \"$Dossier_save\$ipaddress.startup-config\" \"$Dossier_save_change\$ipaddress.$date.startup-config\"
Test-Connection $ipaddress -Count 3 -Quiet
Move-Item $Sortie $Dossier_save
} else {
write-host \"Configurations identiques\"
}
} else {
Move-Item -Path \"$Sortie\" -Destination \"$Dossier_save\$ipaddress.startup-config\"
}
Remove-Item $Dossier_save_temp\tempactu.txt
Remove-Item $Dossier_save_temp\tempdiff.txt
Remove-Item $Dossier_save_temp\$ipaddress.startup-config
Test-Connection $ipaddress -Count 2 -Quiet
Write-Host \"Fin de boucle\"
}
}[/code:1]
Ma première erreur :
[code:1]Move-Item : Le processus ne peut pas accéder au fichier, car il est utilisé par un autre processus.
Au caractère C:\tftp\betatest.ps1:87 : 5
+ Move-Item -Path \"$Sortie\" -Destination \"$Dossier_save\$ipaddress.startup-con ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (\\serv\c$\tft....startup-config:FileInfo) [Move-Item], IOException
+ FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
[/code:1]
La seconde est que la session PowerShell ne se termine pas sur 1 de mes switchs (Remove-SSHSession en mode verbeux me dit qu'il initialise la cloture mais ne va pas jusqu'au bout du processus).
Avez-vous une idée ?
Merci d'avance
Message édité par: odric88, à: 29/12/15 13:02<br><br>Message édité par: odric88, à: 29/12/15 13:04
Depuis quelques temps je travail sur un moyen de sauvegarder les actifs réseaux de mon parc.
Je viens de faire un script avec POSH-SSH mais j'ai quelques erreurs.
Voici le script :
[code:1]#################################################################################################
# Author: Odric #
# Requirements: Powershell 3.0, Posh-SSH module #
# For install POSH-SSH go to : github.com/darkoperator/Posh-SSH #
# Installation : #
# Accept external scripting (Set-ExecutionPolicy Unrestricted) #
#################################################################################################
# Download and Install :
# iex (New-Object Net.WebClient).DownloadString(\"gist.github.com/darkoperator/6152630/raw...poshsshdev\"«») #
# 10.1.2.3 = serv and tftp server
#Static folders
$Dossier_save = \"\\serv\c$\tftp\"
$Dossier_save_change = \"\\serv\c$\tftp\change\"
$Dossier_save_temp = \"\\serv\c$\tftp\temp\"
#Import of CSV File (Cisco SW and SmallBusiness SW List)
$CSV = Import-Csv -Path \"$Dossier_save\liste_sw.csv\" -Delimiter \";\"
#Loop Begin
Foreach ($Commu in $CSV) {
$ipaddress = $Commu.switchip
$username = $Commu.user
$password = $Commu.pass
$modele = $Commu.modele
$date = Get-Date -Format \"yyyy-MM-dd\"
#Test Connection to Switch
if (Test-Connection $ipaddress -Count 5 -Quiet) {
#Create string for password security check on cisco
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr
New-SSHSession -ComputerName $ipaddress -Credential $cred
$session = Get-SSHSession -Index 0
$stream = $session.Session.CreateShellStream(\"dumb\", 0, 0, 0, 0, 1000)
if ($modele -eq \"sb\"«») {
Write-Host \"Small Business\"
$stream.Write(\"cisco`n\"«»)
$stream.Write(\"$password`n\"«»)
$stream.WriteLine(\"copy startup-config tftp://10.1.2.3/temp/$ipaddress.startup-config\"«»)
Write-Host \"Fin Small Business\"
Test-Connection $ipaddress -Count 3 -Quiet
Remove-SSHSession -Index 0
}
if ($modele -eq \"cisco\"«») {
Write-Host \"Cisco\"
$stream.WriteLine(\"terminal len 0\"«»)
$stream.WriteLine(\"configure terminal\"«»)
$stream.WriteLine(\"file prompt quiet\"«»)
$stream.WriteLine(\"exit\"«»)
$stream.WriteLine(\"copy startup-config tftp://10.1.2.3/temp/$ipaddress.startup-config\"«»)
$stream.WriteLine(\"clear ip arp 10.1.2.3\"«»)
$stream.WriteLine(\"exit\"«»)
Write-Host \"Fin Cisco\"
Test-Connection $ipaddress -Count 3 -Quiet
Remove-SSHSession -Index 0
Write-Host \"Fin SSH $ipaddress\"
}
Write-Host \"Récuperation de la sortie\"
$Sortie = \"$Dossier_save_temp\$ipaddress.startup-config\"
Get-Content $Sortie | Out-File $Dossier_save_temp\tempactu.txt
if (Test-Path -Path \"$Dossier_save\$ipaddress.startup-config\"«») {
Get-Content \"$Dossier_save\$ipaddress.startup-config\" | Out-File $Dossier_save_temp\tempdiff.txt
$conf_actu_rev = Get-Content $Dossier_save_temp\tempactu.txt
$conf_diff_rev = Get-Content $Dossier_save_temp\tempdiff.txt
if (Compare-Object -ReferenceObject $conf_actu_rev -DifferenceObject $conf_diff_rev) {
Move-Item \"$Dossier_save\$ipaddress.startup-config\" \"$Dossier_save_change\$ipaddress.$date.startup-config\"
Test-Connection $ipaddress -Count 3 -Quiet
Move-Item $Sortie $Dossier_save
} else {
write-host \"Configurations identiques\"
}
} else {
Move-Item -Path \"$Sortie\" -Destination \"$Dossier_save\$ipaddress.startup-config\"
}
Remove-Item $Dossier_save_temp\tempactu.txt
Remove-Item $Dossier_save_temp\tempdiff.txt
Remove-Item $Dossier_save_temp\$ipaddress.startup-config
Test-Connection $ipaddress -Count 2 -Quiet
Write-Host \"Fin de boucle\"
}
}[/code:1]
Ma première erreur :
[code:1]Move-Item : Le processus ne peut pas accéder au fichier, car il est utilisé par un autre processus.
Au caractère C:\tftp\betatest.ps1:87 : 5
+ Move-Item -Path \"$Sortie\" -Destination \"$Dossier_save\$ipaddress.startup-con ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (\\serv\c$\tft....startup-config:FileInfo) [Move-Item], IOException
+ FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
[/code:1]
La seconde est que la session PowerShell ne se termine pas sur 1 de mes switchs (Remove-SSHSession en mode verbeux me dit qu'il initialise la cloture mais ne va pas jusqu'au bout du processus).
Avez-vous une idée ?
Merci d'avance
Message édité par: odric88, à: 29/12/15 13:02<br><br>Message édité par: odric88, à: 29/12/15 13:04
Connexion ou Créer un compte pour participer à la conversation.
- Odric
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 10 ans 2 mois #21227
par Odric
Réponse de Odric sur le sujet Re:Script PS sauvegarde Cisco / Small Business
Bonjour à tous et bonne année surtout.
J'ai réussi à comprendre les 2 erreurs qui apparaissaient.
La première n'était juste qu'une question de permissions insuffisantes ... (Oubli de désactiver l'héritage).
La seconde est que les SmallBusiness ne comprennent pas la commande de déconnexion SSH.
Rester sur l'ID 0 du coup n'était pas le bon choix.
Encore une bonne année à tous
.
Odric
J'ai réussi à comprendre les 2 erreurs qui apparaissaient.
La première n'était juste qu'une question de permissions insuffisantes ... (Oubli de désactiver l'héritage).
La seconde est que les SmallBusiness ne comprennent pas la commande de déconnexion SSH.
Rester sur l'ID 0 du coup n'était pas le bon choix.
Encore une bonne année à tous
Odric
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.078 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Script PS sauvegarde Cisco / Small Business