Page 2 sur 3
Re: [R] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 09:32
par koa0
Merci pour ton aide.
Je viens de comprendre.
pscp -pw xxxxxxx
yyyyyy@xxx.xxx.xxx.xxx:/appele/teler/db/temp/essai.txt d:\temp.
C'est bien ce que tu me disais. J'ai la source puis la destination. Je vien de tester et ça marche.
Merci pour ton aide
Bonne journée
PS: J'ai passé en Resolu
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 09:54
par sylvanie
Et bien tant mieux ^^
ps si un jour tu es confronté à scp en natif sur linux, c'est toujours le même type de syntaxe (sans le -pw) avec toujours en premier argument fichier à copier et en deuxième la destination.
D'ailleurs ça marche aussi pour envoyer un fichier depuis le client vers le serveur :
pscp -pw xxxxxxx d:\temp\toto.txt
yyyyyy@xxx.xxx.xxx.xxx:/tmp
ceci va envoyer le fichier local d:\temp\toto.txt vers le serveur ssh sous /tmp
Re: [R] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 10:23
par koa0
Merci pour l'info supplémentaire. D'autant plus que j'en ai aussi besoin.
Bonne journée.
A+
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 11:18
par koa0
Je reviens vers toi car je ne sais pas comment m'y prendre.
Je veux scruter un rep sous AIX et à chaque fois que j'ai un fichier toto.txt je le récupère.
PS: Désolé de t'embêter encore
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 11:41
par koa0
Je donne des info supplementaire car ce que je viens d'ecrire n'est pas tres clair:
Je suis sous windows comme precedemment
Je veux scruter un rep sous AIX
si fichier présent je le transfert sous windows
j'archive le fichier sous AIX
je test si le transfert est bon
Je l'envoi par mail
Je ne sais pas faire le scrutage.
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 12:18
par sylvanie
huum, on commence à déborder du cadre Autoit, mais bon...
1) se connecter en ssh via un client (putty, autres ...)
2) exécuter sur le serveur "find /chemin_a_sonder -name "toto\.txt" > /tmp/liste_a_chercher
3) récupérer le fichier /tmp/liste_a_chercher sur le client Windows
4) mette le fichier en question à la racine où se trouve pscp (on va au plus vite pour l'instant mais faudra faire plus propre)
5) copier ce script là où est pscp (idem) et mettre la vrai IP du serveur
► Afficher le texte
Code : Tout sélectionner
$file=@ScriptDir&"\liste_a_chercher"
$serveur="xxxxxxx"
$user=InputBox("User","User")
$passwd=InputBox("Passwd","Password de "&$user,"","*")
If $user="" Or $passwd= "" Then Exit 1
$hnd=FileOpen($file,0)
If $hnd=-1 Then Exit 2
$rep_out=@ScriptDir&"\SCP_"&@YEAR&"_"&@MON&"_"&@MDAY&"_"&@HOUR&"_"&@MIN&"_"&@SEC
ConsoleWrite(DirCreate($rep_out)&@CRLF)
$rep_out='"'&$rep_out&'"'
While 1
$remote=FileReadLine($hnd)
If @error=-1 Then ExitLoop
TrayTip("SCP",$remote,2)
RunWait(@ComSpec&" /c pscp.exe -pw "&$passwd&" "&$user&"@"&$serveur&":"&$remote&" "&$rep_out,@ScriptDir,@SW_HIDE)
ConsoleWrite("pscp.exe -pw "&$passwd&" "&$user&"@"&$serveur&":"&$remote&" "&$rep_out&"\*"&@CRLF)
WEnd
FileClose($hnd)
MsgBox(0,"Fin","Fin")
Attention, je ne teste pas le code retour de pscp, donc il faudra vérifier si le nombre de fichier y est pour voir si il y a eu des erreurs
Ces script range le tout dans un rep à la racine nommé SCP_dat_heure_min_seconde
[ EDIT ] il y a eu croisement de post, il va visiblement falloir faire alors l'amorce ssh en auto aussi
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 12:51
par koa0
Effectivement.
Je veux pouvoir scruter mon serveur AIX depuis windows mais j'ai peur que cela prenne des ressources considerables.
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 13:47
par sylvanie
Bon et bien même consigne que tout à l'heure avec en plus
Créer à la racine du script le fichier "find_files.txt" contenant :
Code : Tout sélectionner
find /chemin_de_recherche -name "toto\.txt" 2>/dev/null > /tmp/liste_a_chercher
logout
et plink doit également être à la même racine
► Afficher le texte
Code : Tout sélectionner
$file=@ScriptDir&"\liste_a_chercher"
$serveur="xxxxxxxxx"
$user=InputBox("User","User")
$passwd=InputBox("Passwd","Password de "&$user,"","*")
If $user="" Or $passwd= "" Then Exit 1
RunWait(@ComSpec&" /c plink.exe -pw "&$passwd&" "&$user&"@"&$serveur&" < find_files.txt",@ScriptDir,@SW_HIDE)
RunWait(@ComSpec&" /c pscp.exe -pw "&$passwd&" "&$user&"@"&$serveur&":/tmp/liste_a_chercher"&" ./",@ScriptDir,@SW_HIDE)
$hnd=FileOpen($file,0)
If $hnd=-1 Then Exit 2
$rep_out=@ScriptDir&"\SCP_"&@YEAR&"_"&@MON&"_"&@MDAY&"_"&@HOUR&"_"&@MIN&"_"&@SEC
ConsoleWrite(DirCreate($rep_out)&@CRLF)
$rep_out='"'&$rep_out&'"'
$error=""
While 1
$remote=FileReadLine($hnd)
If @error=-1 Then ExitLoop
TrayTip("SCP",$remote,2)
if(RunWait(@ComSpec&" /c pscp.exe -pw "&$passwd&" "&$user&"@"&$serveur&":"&$remote&" "&$rep_out,@ScriptDir,@SW_HIDE)&@CRLF)<>0 Then
$error&=$remote&@CRLF
EndIf
WEnd
FileClose($hnd)
If $error<> "" Then
MsgBox(16,"Erreur","Probleme de copie sur :"&@CRLF&$error)
Else
MsgBox(0,"Fin","Tout est OK")
EndIf
Par contre la bonne blague ici est que si tous les fichiers se nomme tous "toto.txt", il vont s'écraser les uns les autres
Ce nom est arbitraires, ou la problématique est réelle.
Sinon on peut contourner en jouant avec le nom de destination avec un indice incrémenté. Ou bien tout simplement un fait un tar.gz de l'ensemble sur le serveur et on récupère ce dernier (mieux finalement)
Pour la puissance ... un poling toutes les 5 minutes par planificateur c'est vraiment pas violent
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 13:52
par koa0
Pour le fichier toto c'est juste un exemple.
Peut on lancer la recherche de windows plutot que de le lancer sur le serveur avec une heure de debut et une heure de fin?
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 13:58
par sylvanie
Non, Windows ne sait pas faire de ssh nativement,
ou alors ce sera par un client qui enverra le même type de commande via ssh
[edit] la recherche temporelle porterai sur des dates de création ou de modification ?
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 14:04
par koa0
Cela m’intéresserait d'avoir un exemple en ssh si tu as le temps bien entendu.
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 14:18
par koa0
La recherche porterait effectivement sur une date de création du fichier.
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 14:36
par sylvanie
Ok, supposons que je veuille lister les fichier .pid de /var/run qui ont été modifiés il y a plus d'une heure :
Maintenant la même chose, mais je veux en plus qu'il n'ai pas été modifié il y a plus de 2 heures :
Code : Tout sélectionner
find /var/run -name "*\.pid" -amin +60 -amin -120 2>/dev/null
C'est la même option "amin", mais le signe + ou - impacte la recherche. L'accumulation des option et par défaut un "et"
Si je veux un ou, il faut utiliser -o entre les deux filtres
exple : je veux les .pid ou les .socket de /var/run
Code : Tout sélectionner
find /var/run -name "*\.pid" -o -name "*\.socket" 2>/dev/null
le 2>/dev/null c'est pour écrémer les erreur d'accès, d'ailleur il manque dans ce que j'ai proposé tout à l'heure, je réédite pour l'ajouter
[edit] recroisement de posts : pour la date de création sous linux, faut faire une croix dessus via find (ou alors ça m'intéresse ), on peut éventuellement prendre ctime, mais ça couvre le changement de status
[ReEdit] ceci dit les exples donnés couvrent les fichiers créés puisqu'ils sont modifiés lorsqu'ils sont créés ...
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 14:47
par koa0
Si je comprends bien le find est lancé depuis UNIX et non pas windows(autoit pour être plus precis). Peut-on lancer cette commande avec autoit? et comment faire
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 14:51
par sylvanie
Et bien c'est ce que j'ai fait dans le script proposé ...
Code : Tout sélectionner
RunWait(@ComSpec&" /c plink.exe -pw "&$passwd&" "&$user&"@"&$serveur&" < find_files.txt",@ScriptDir,@SW_HIDE)
Autolit envoie les commandes au serveur :
Code : Tout sélectionner
find /chemin -name "toto\.txt 2>/dev/null" > /tmp/liste_a_chercher
logout
avant d'aller récupérer le fichier /tmp/liste_a_chercher
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 14:54
par sylvanie
Ahh , il manque la récupération, du fichier dans le script, je reviens dans 30 min ...
en attendant il faut ajouter ceci après l'appel à plink
RunWait(@ComSpec&" /c pscp.exe -pw "&$passwd&" "&$user&"@"&$serveur&":/tmp/liste_a_chercher"&" ./",@ScriptDir,@SW_HIDE)
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 15:00
par koa0
Ok merci je test
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 15:29
par sylvanie
deuxième script updaté avec la modif
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 15:32
par koa0
Il me manque donc l'appelle de la commande de scrutation depuis windows sur serveur AIX et là je sais pas faire.
Re: [..] Récupération de fichier par SFTP
Posté : ven. 08 avr. 2011 15:37
par sylvanie
Et bien ça y est elle est dans le post décrivant le contenu de find_files.txt et le spoiler contenant le code mis à jour