PDA

View Full Version : File Batch per ubuntu


robi_pal
01-12-2010, 22:20
Ciao, ho un impianto fotovoltaico monitorato da un datalogger che fa anche da web server.
Il datalogger invia i dati ad una pagina web per visualizzarli e funziona tutto alla grande.
Dovrei inviare i dati anche ad una seconda pagina web ma il datalogger non lo può fare.
Un mio conoscente ci è riuscito scrivendo un file batch di DOS per eseguire l'operazione ad intervalli di tempo prefissati, purtroppo (per lui) utilizza Winzozz mentre io utilizzo Ubuntu.
Ho provato a capire come trasformare il file batch di DOS in script di shell, ma le mie conoscenze informatiche non me lo consentono, dopo svariate notti insonni a cercare di capire mi sono arreso, qualcuno può aiutarmi per favore ?
Il file Batch è il seguente :


setlocal

set giornojs="min%date:~-2,4%%date:~-7,2%%date:~-10,2%.js"

del ftp1.txt
echo open robipal.altervista.org >> ftp1.txt
echo user nomeutente password >> ftp1.txt
echo binary >> ftp1.txt
echo cd fvcasa >> ftp1.txt
echo get base_vars.js>> ftp1.txt
echo get months.js>> ftp1.txt
echo get years.js>> ftp1.txt
echo get days.js>> ftp1.txt
echo get days_hist.js>> ftp1.txt
echo get events.js>> ftp1.txt
echo get events_day.js>> ftp1.txt
echo get min_day.js>> ftp1.txt
echo get min_cur.js>> ftp1.txt
echo get %giornojs%>> ftp1.txt
echo quit >> ftp1.txt
ftp -n -s:ftp1.txt


setlocal
set giornojs="min%date:~-2,4%%date:~-7,2%%date:~-10,2%.js"

del ftp2.txt
echo open home.solarlog-web.it >> ftp2.txt
echo user nomeutente pasword >> ftp2.txt
echo binary >> ftp2.txt
echo cd 83 >> ftp2.txt
echo send base_vars.js>> ftp2.txt
echo send months.js>> ftp2.txt
echo send years.js>> ftp2.txt
echo send days.js>> ftp2.txt
echo send days_hist.js>> ftp2.txt
echo send events.js>> ftp2.txt
echo send events_day.js>> ftp2.txt
echo send min_day.js>> ftp2.txt
echo send min_cur.js>> ftp2.txt
echo send %giornojs%>> ftp2.txt
echo quit >> ftp2.txt
ftp -n -s:ftp2.txt

Grazie

sacarde
02-12-2010, 12:49
in linux puoi anche accedere via bash

esempio:


#!/bin/bash -l
HOST='ftp.xxxxx.it'
USER='***'
PASSWD='***'

ftp -n -i $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD

(qui inserisci i comandi da dare)

...
quit
END_SCRIPT

robi_pal
02-12-2010, 13:16
[QUOTE=sacarde;33817715]in linux puoi anche accedere via bash

esempio:

[code]
#!/bin/bash -l
HOST='ftp.xxxxx.it'
USER='***'
PASSWD='***'
.......

non mi sono spiegato bene o non capisco io ;
devo prelevare dei files da una directory dell'host "A" e devo poi inviarli in una directory dell'host "B", quindi devo solamente copiare i comandi del file batch dove mi hai messo (qui inserisci i comandi da dare) ?
Perdonami ma le mie conoscenze informatiche sono veramente molto limitate

sacarde
02-12-2010, 16:23
beh si....
dopo aver fatto la connessione,
poi eseguire i comandi ftp: get e send
(chiaramente non occorre l'echo, ne' la redirezione >>.....)


p.s.
la riga "set giorno....ecc" non l'ho ancora capita

robi_pal
03-12-2010, 12:00
Grazie Sacarde per i suggerimenti

La riga "set giorno...ecc" credo serva a selezionare il file del giorno corrente, infatti vedo che all'interno del sito altervista ogni giorno viene creato il file "mindatadioggi.js e rimangono quelli dei giorni precedenti.

Stranamente ci sono anche tre file con date assurde : quello di oggi è "min101203.js" e poi ci sono anche "min180722.js" - "min180723.js" e "min180724".

Il file bash posso poi lanciarlo da cron a intervalli stabiliti ?

sacarde
03-12-2010, 12:38
non ho ancora capito il comando "set giorno...ecc"

deve essere modificato per linux



p.s.
si si come qualsiasi altro script puo' essere eseguito a tempo con cron

Damage92
05-12-2010, 18:54
Grazie Sacarde per i suggerimenti

La riga "set giorno...ecc" credo serva a selezionare il file del giorno corrente, infatti vedo che all'interno del sito altervista ogni giorno viene creato il file "mindatadioggi.js e rimangono quelli dei giorni precedenti.

Stranamente ci sono anche tre file con date assurde : quello di oggi è "min101203.js" e poi ci sono anche "min180722.js" - "min180723.js" e "min180724".

Il file bash posso poi lanciarlo da cron a intervalli stabiliti ?

Ma alla fine hai risolto?
Per ottenere il nome del file potresti fare così:
echo min$(date +%y%m%y).js

In pratica quello che sta tra le parentesi precedute da $ viene eseguito come comando, e il suo output viene stampato da echo come se fosse una normale stringa (come fa per "min" e ".js").

Ciao!

robi_pal
05-12-2010, 20:21
non ho ancora avuto tempo di provare il file bash per il fotovoltaico.
Sto sistemando il sito della stazione meteo e , visto che mi servono anche per quello,sto capendo un po' alla volta le funzioni di wget, ncftp e cron.
Grazie per i suggerimenti
Vi farò sapere degli sviluppi