Récupérer une variable dans script FTP

Bonjour à tous,

J’espère tout d’abord que je vais être claire dans mes propos (c’est quelque fois pas facile :laughing:).

J’ai réalisé un script qui me permet de sauvegarder de manière journalière, les logs du proxy “Squid”. Ce script fonctionne à merveille :wink:

Le voici :

[code]#!/bin/sh

Initialisation de la date courante sous forme de variable

DATE=date +”%y-%m-%d”

Création du fichier de log du jour

touch /root/Desktop/log_squid_jour/log_cyber$DATE

Copie des logs du jour dans le fichier d’archives

cp /var/log/squid/access.log /root/Desktop/log_squid_jour/log_cyber$DATE

Compression du fichier de log

gzip log_cyber$DATE.gz /root/Desktop/log_squid_jour/log_cyber$DATE

Suppression du fichier contenant les logs du jour

rm /var/log/squid/access.log

Rechargement de la configuration de Squid permettant de recréer un fichier de log vierge

squid -k reconfigure

Destruction des logs datant de plus d’un an

find /root/Desktop/log_squid/ -ctime +365 -exec rm -f {} ;

Fin du script

exit 0[/code]

Ensuite, j’aurai voulu “pousser” ce fameux fichier “log_cyber$DATE” sur un FTP.

J’ai donc écrit un petit script du genre (que j’ai collé derrière l’autre) :

[code]ftp -v -n 217.xxx.xx.xx <<SCRIPT
user identifiant mdp
ascii
cd /home/replog
lcd /root/Desktop/log_squid_jour
put log_cyber$DATE

bye

SCRIPT
exit 0[/code]

Si au niveau de la commande “put”, je renseigne un nom de fichier qui va bien, le fichier monte sans prb… Mais moi ce que je voudrais, c’est que le fichier qui monte soit celui qui a le nom “log_cyber$DATE” autrement dit, que ce soit celui créé du jour même.

Et là, je vois bien que dans le FTP, il ne sait pas intégrer ma variable “$DATE” mais je ne vois pas comment contourner la chose…

Si une âme charitable pouvait m’éclairer…

Merci beaucoup.

Zikos.

j’utilise un script presque en tout point equivalent au tiens pour faire exporter un backup journalier sur un ftp distant, la seule différence c’est l’emplacement de la variable. Chez moi ça donne

[code]ftp -v -n 217.xxx.xx.xx <<SCRIPT
user identifiant mdp
ascii
cd /home/replog
lcd /root/Desktop/log_squid_jour
put $DATE.extension

bye

SCRIPT
exit 0
[/code]
et ça fonctionne parfaitement

pour info, lors de l’installation de squid, il place un fichier de conf dans le dossier logrotate.d.

logrotate s’occupe deja de faire les archives et de supprimer les vieux logs.

il suffit juste de recuperer les fichiers d’archive et de faire un cp ou un rsync pour les mettre sur un autre serveur, mais pas besoin de te creuser plus que ça.

[quote=“alexmath”]j’utilise un script presque en tout point equivalent au tiens pour faire exporter un backup journalier sur un ftp distant, la seule différence c’est l’emplacement de la variable. Chez moi ça donne

[code]ftp -v -n 217.xxx.xx.xx <<SCRIPT
user identifiant mdp
ascii
cd /home/replog
lcd /root/Desktop/log_squid_jour
put $DATE.extension

bye

SCRIPT
exit 0
[/code]
et ça fonctionne parfaitement[/quote]

Merci, il semble visiblement que j’avais oublié de mentionner l’extension “.gz” du fichier à monter sur le FTP !!!

Par contre, du coup, j’ai décidé de séparer les 2 fichiers disctinctements et de les exécuter par un cron l’un après l’autre…

Je viens de tester et maintenant, j’ai droit à un autre message dans le terminal qui fait que ma fenetre ne se ferme pas et que visiblement mon transfert de fichier n’est pas ok à 100% (le fichier est monté sur le FTP mais semble altéré).

Voici le script que j’utilise donc :

#!/bin/sh

Initialisation de la date courante sous forme de variable

DATE=date +”%y-%m-%d”

[code]ftp -v -n 217.xxx.xx.xx <<SCRIPT
user identifiant mdp
ascii
cd /home/replog
lcd /root/Desktop/log_squid_jour

put log_cyber$DATE.gz
bye
SCRIPT[/code]

Et là, j’ai le droit à ça :

Connected to 217.xxx.xx.xx. 220 Be Welcome in our FTP service. 331 Please specify the password. 230 Login successful. Have fun. Remote system type is UNIX. Using binary mode to transfer files. 200 ASCII tastes bad, dude. 250 Directory successfully changed. Local directory now /root/Desktop/log_squid_jour local: log_cyber”09-01-16”.gz remote: log_cyber”09-01-16”.gz 200 PORT command successful. Consider using PASV. 500 OOPS: vsf_sysutil_bind

Une idée ?

Merci,

Cordialement,

Zikos.

Personne n’a d’idée pour ce message FTP ? :

200 PORT command successful. Consider using PASV. 500 OOPS: vsf_sysutil_bind

Désolé pour le lag.
Il te faut utiliser le FTP en mode passif :

$ man ftp | sed -n '/^[[:space:]]*-p/{N;p;}' -p Use passive mode for data transfers. Allows use of ftp in environ‐ ments where a firewall prevents connections from the outside world