# Récupérer une variable dans script FTP

**URL:** <https://www.debian-fr.org/t/recuperer-une-variable-dans-script-ftp/17519>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 6:50 UTC](https://www.debian-fr.org/t/recuperer-une-variable-dans-script-ftp/17519 "2016-02-20T18:50:18Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![zikos](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ed655f/32.png) [@zikos](https://www.debian-fr.org/u/zikos)\
**Post date:** [Février 20, 2016, 6:50 UTC](https://www.debian-fr.org/t/recuperer-une-variable-dans-script-ftp/17519/1 "2016-02-20T18:50:18Z")

</div>

Bonjour à tous,

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

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 😉

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.

---

<div class="post-metadata">

**Author:** ![alexmath](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8edcca/32.png) [@alexmath](https://www.debian-fr.org/u/alexmath)\
**Post date:** [Février 20, 2016, 6:50 UTC](https://www.debian-fr.org/t/recuperer-une-variable-dans-script-ftp/17519/2 "2016-02-20T18:50:34Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![thomas.leclerc](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/59ef9b/32.png) [@thomas.leclerc](https://www.debian-fr.org/u/thomas.leclerc)\
**Post date:** [Février 20, 2016, 6:50 UTC](https://www.debian-fr.org/t/recuperer-une-variable-dans-script-ftp/17519/3 "2016-02-20T18:50:34Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![zikos](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ed655f/32.png) [@zikos](https://www.debian-fr.org/u/zikos)\
**Post date:** [Février 20, 2016, 6:50 UTC](https://www.debian-fr.org/t/recuperer-une-variable-dans-script-ftp/17519/4 "2016-02-20T18:50:47Z")

</div>

[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.

---

<div class="post-metadata">

**Author:** ![zikos](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ed655f/32.png) [@zikos](https://www.debian-fr.org/u/zikos)\
**Post date:** [Février 20, 2016, 6:54 UTC](https://www.debian-fr.org/t/recuperer-une-variable-dans-script-ftp/17519/5 "2016-02-20T18:54:52Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![sputnick](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/8c91f0/32.png) [@sputnick](https://www.debian-fr.org/u/sputnick)\
**Post date:** [Février 20, 2016, 7:01 UTC](https://www.debian-fr.org/t/recuperer-une-variable-dans-script-ftp/17519/6 "2016-02-20T19:01:32Z")

</div>

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
`
