Script shell ftp

Script shell ftp - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-09-2010 à 15:57:15    

Salut
J'ai une camera ip qui fonctionne sur uclinux, le firmware est assez limité et je voudrait rajouter un upload d'image par ftp, il est possible de rajouter des scripts dans la camera (directement a partir du menu ou via telnet):
 
J'ai un exemple de script pour l'envoi par email:
 
#!/bin/sh
 
MAILTO="name@domain.com"
MAILHOST=domain.com
 
MAILFROM=name@domain.com
HOSTNAME=domain.com
 
IMAGEPATH=/var/httpd/netcam.jpg
 
IMAGE=`basename $IMAGEPATH`
SUBJECT=netcam-`date '+%H:%M:%S'`
 
/bin/uuencode $IMAGEPATH $IMAGE | /bin/mail -s $SUBJECT -S $MAILHOST -H $HOSTNAME -f $MAILFROM $MAILTO
 
Voila si quelqu'un pouvait m'indiquer la marche a suivre ou des exemple de script, merci d'avance.


---------------

Reply

Marsh Posté le 20-09-2010 à 15:57:15   

Reply

Marsh Posté le 20-09-2010 à 16:11:59    

Le principe c'est d'utiliser un <<EOF  
...
EOF
 

Code :
  1. ftp -u <host> <<EOF
  2. user <user> <password>
  3. bin
  4. put/get <file>
  5. quit
  6. EOF


 
Attention le ftp n'est PAS FIABLE !
 
Il renvoi un retour 0 sauf en cas d''erreur de connexion, si par exemple le FS est plein et que seul 10% du fichier à été transmis tu auras quand même un beau OK.


---------------
Il y a trois sortes de mensonges : les mensonges, les gros mensonges et les statistiques !
Reply

Marsh Posté le 20-09-2010 à 19:36:17    

Merci pour ta réponse, donc le script devrait resembler a ca:
 

Code :
  1. #!/bin/sh
  2. ftp -u 0.0.0.0 <<EOF
  3. user login 123456
  4. bin
  5. cd /domains/webcam/public_html/upload
  6. put /var/httpd/netcam.jpg
  7. quit
  8. EOF


Reply

Marsh Posté le 21-09-2010 à 10:26:26    

C'est ça, après rien ne t'empêche de le rendre  générique comme tu l'as fait pour l'envoi par mail avec des variables et tout et tout :D


Message édité par Hrolf le 21-09-2010 à 10:28:25

---------------
Il y a trois sortes de mensonges : les mensonges, les gros mensonges et les statistiques !
Reply

Marsh Posté le 21-09-2010 à 10:46:32    

Bon ca na pas l'air de fonctionner, voila ce que j'ai fait:
 
Via telnet, création avec vi d'un fichier ftp.sh avec dedans:
 
   #!/bin/sh
   ftp -u 0.0.0.0 <<EOF
   user login 123456
   bin
   cd /domains/webcam/public_html/upload
   put /var/httpd/netcam.jpg
   quit
   EOF
 
Sauvegarde du fichier puis chmod +x ftp.sh  
 
Edition du fichier crontab avec ajout de la ligne: */5 * * * * admin /etc/ftp.sh  
 
j'ai tapé la commande config save dans telnet et enfin un reboot de la camera, et résultat aucuns fichier d'envoyé !!!

Reply

Marsh Posté le 21-09-2010 à 10:50:32    

Et si tu lançais le script à la main pour voir si y a des erreurs  aussi !

Reply

Marsh Posté le 21-09-2010 à 10:56:58    

j'ai fait un ./ftp.sh via telnet et ca repond: ftp: u: unknown option


---------------

Reply

Marsh Posté le 21-09-2010 à 11:14:30    

Bein voilà :o
ftp n'a pas l'option -u chez toi :o
 
donc, tape "man ftp" pour voir ce qui cloche


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-09-2010 à 11:24:06    

alors man ftp donne: man not found


---------------

Reply

Marsh Posté le 21-09-2010 à 11:28:13    

et lorsque je lance le script sans le -u ca donne ca:
 
ftp.sh
Name (0.0.0.0:admin): Password:
Login incorrect.
Login failed.
?Invalid command
?Ambiguous command


Message édité par websat le 21-09-2010 à 11:29:08

---------------

Reply

Marsh Posté le 21-09-2010 à 11:28:13   

Reply

Marsh Posté le 21-09-2010 à 11:45:36    

Essayes avec ca:

Code :
  1. #!/bin/sh
  2. HOST='ftp.users.qwest.net'
  3. USER='yourid'
  4. PASSWD='yourpw'
  5. FILE='file.txt'
  6. ftp -n $HOST <<END_SCRIPT
  7. quote USER $USER
  8. quote PASS $PASSWD
  9. put $FILE
  10. quit
  11. END_SCRIPT
  12. exit 0

Reply

Marsh Posté le 21-09-2010 à 12:58:38    

j'ai essayé ton bout de code je tape sur entrer et le curseur descend d'une ligne et c'est tout par d'autre réaction... et au bout de quelques minutes:
 
ftp: connect: Connection timed out
Not connected.
Not connected.
Not connected.


Message édité par websat le 21-09-2010 à 13:06:28

---------------

Reply

Marsh Posté le 21-09-2010 à 13:25:29    

En fait tu sais que si tu met un "set -x" en début de fichier (après l'appel au shell) tu auras un joli mode débug :D
 
Le principe est normalement le bon après le client FTP que tu utilises doit avoir des options à la con, essai de faire un test ftp à la main pour savoir ce qu'il demande à option
ce qui est entre les 2 EOF est ce que tu aurais normalement tapé comme commandes à la main.


---------------
Il y a trois sortes de mensonges : les mensonges, les gros mensonges et les statistiques !
Reply

Marsh Posté le 21-09-2010 à 13:29:57    

websat a écrit :

alors man ftp donne: man not found

 

Tu as pas man installé sur ta machine  [:k-nar]
Mais comment tu fais pour bosser dessus :??:


Message édité par esox_ch le 21-09-2010 à 13:30:24

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 21-09-2010 à 13:33:15    

Hrolf a écrit :

En fait tu sais que si tu met un "set -x" en début de fichier (après l'appel au shell) tu auras un joli mode débug :D
 
Le principe est normalement le bon après le client FTP que tu utilises doit avoir des options à la con, essai de faire un test ftp à la main pour savoir ce qu'il demande à option
ce qui est entre les 2 EOF est ce que tu aurais normalement tapé comme commandes à la main.


 
Ok, merci je teste ça, pour répondre a esox_ch la machine en question est une camera ip...

Reply

Marsh Posté le 21-09-2010 à 13:37:50    

Tu fais le script sur la camera IP vers le serveur  :heink:  
 
C'est étrange ça :o
 
Je ferais plutôt le contraire moi !


---------------
Il y a trois sortes de mensonges : les mensonges, les gros mensonges et les statistiques !
Reply

Marsh Posté le 21-09-2010 à 14:16:45    

Oui, je pense que je devrait plutôt gérer ca sur le serveur (Kimsufi 250), en fait ce que je voudrait faire:
 
L'image de la camera est en 1024 x 768 je souhaite rester dans cette résolution car c'est la résolution optimale pour avoir la meilleure qualité d'image, j'utilise un diaporama (pixxerbase.ch) qui fonctionne uniquement avec des images en 640 x 480 et avec un chemin spécifique pour l'archivage des images:
 
%Y/%m/%d/%H/m12-vga%M.jpg ce qui donne 2010/09/21/14/m12-vga15.jpg
 
Maintenant je ne sait ce qu'il est possible de faire mais il faudrait un script pour télécharger l'image en 1024 x 768 toutes les 5 minutes, la redimensionner en 640 x 480, créer les répertoires suivent la date et l'heure et placer l'image au bon endroit
 
Mais peut être le mieux est de trouver un autre diaporama qui pourrai afficher les images archivées sous ce format: 18_09_2010_17_32.jpg  car la camera sait envoyer les images de cette maniére.


---------------

Reply

Marsh Posté le 21-09-2010 à 15:38:44    

Et tu en es où avec le ftp ?

Reply

Marsh Posté le 28-09-2010 à 04:32:46    

lftp serais pourrais être indiqué ici

Reply

Marsh Posté le 28-09-2010 à 09:13:21    

En fait pour simplifier les choses (en cas de mise a jour de la camera je perds les modifs) le mieux je pense est d'utiliser un script php pour trier les images suivant la date et l'heure voulue, la camera peut nativement uploader les images de cette manière: %d_%m_%Y_%H_%M.jpg. Si quelqu'un connait un tel script...


---------------

Reply

Marsh Posté le 28-09-2010 à 09:21:51    

personne n'a tiqué qu'il faisait un ftp sur 0.0.0.0 ? [:petrus75]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 28-09-2010 à 09:23:04    

c'est pour masquer l'ip !!!


---------------

Reply

Marsh Posté le 28-09-2010 à 09:31:10    

websat a écrit :

c'est pour masquer l'ip !!!


 
mon dieu [:totoz]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed