Visualizzazione post con etichetta Bash. Mostra tutti i post
Visualizzazione post con etichetta Bash. Mostra tutti i post

giovedì 19 ottobre 2017

Bash ftp script

uno script bash per inviare dati in FTP
un paio di dettagli

  1. per usare le wildcard si devono i comandi mdel ed mput
  2. Per usare mput con la wildcard ci si deve prima spostare nella directory in cui sono contenuti i file mediante lcd perche' mput non permette di inserire il path completo ma solo il nome file
  3. ftp -ni indica una sessione non interattiva e in modalita' autologin
  4. quote serve ad inviare il contenuto della variabile al server remoto
------------------------------------------------------------------------------
#!/bin/sh
HOST="ftp.xxxxxxxxx.it"
USER="xxxxxxxx@aruba.it"
PASSWD="xxxxx"

ftp -ni $HOST<<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd xxxxxx/yyyy/zzzzz/
mdel *
lcd /home/luca/
binary
mput *.ics
quit
END_SCRIPT
exit 0


venerdì 17 febbraio 2017

Ftp e Bash

un piccolo script, rubato su Internet non ricordo dove, per mandare in batch l'upload di un file

--------------
#!/bin/bash
HOST=ftp.xxxx.altervista.org
USER=xxxxx
PASS=xxxxx
ftp -inv $HOST << EOF
user $USER $PASS
cd SMSTracker
put test.txt
bye
EOF
---------------

mercoledì 7 ottobre 2015

Copia ricorsiva con Bash

In alcuni casi, per esempio copiare tutti i file mp3 da una collezione, puo' essere utile un comando che cerchi in automatico tutti i file con una determinata estensione e li metta tutti in una directory senza rispettare l'albero delle directory originario.
Tale operazione puo' essere fatta con un solo comando


find . -name "*.mp3" -type f -exec cp {} ../destinazione/ \;

(attenzione allo spazio tra l'ultima slash e backslah)

lunedì 5 ottobre 2015

Leggere la porta seriale da Linux

Alcune volte puo' essere utile leggere il flusso da una porta seriale in Linux direttamente da shell senza passare da Minicom o simili

Per esempio si puo' leggere il flusso seriale da una Arduino (che di solito e'configurata come 9600 8N1)
Per prima cosa si devono impostare le giuste configurazione per la porta seriale (una Arduino collegata via USB ad una Linux Box di solito si presenta su /dev/ttyACM0

stty -F /dev/ttyACM0 raw ispeed 9600 ospeed 9600 cs8 -ignpar -cstopb -echo
dopo di cio' e' sufficiente 

cat /dev/ttyACM0

per vedere il flusso dati

mercoledì 15 ottobre 2014

Script Bash per riavviare un programma

Un problema che si e' posto recentemente e' quello di un programma che gestisce l'acquisione di un sensore si blocca in modo casuale con un messaggio nel log di connection reset by peer

Essendo un software commerciale la consultazione su internet non ha portato risultati e cosi' e'stato provato di scrivere un piccolo programmino in bash da mandare in background che controlla l'attivita' del programma e nel caso lo riavvia

Purtroppo quando il programma entra in errore di fatto non crasha ma rimane attivo in memoria senza fare niente, come in stallo, per cui mediante il comando ps non e' possibile verificare il suo stato di funzionamento
E' stato notato pero' che il file di log si blocca nel momento in cui il programma entra in stallo per cui lo script bash controlla la dimensione del file ad intervalli prefissati, nel caso le dimensioni del file di log non mutino si killa il processo e lo si riavvia

(in giallo le parti da personalizzare)
-----------------------------------------------------------------------------
#!/bin/bash
prima=0 #lunghezza file di log prima
dopo=0 #lunghezza file di log dopo
while true; do #ciclo infinito
dopo=$(stat -c%s "dati.log") #inserire qui il nome del file di log
if (($dopo==$prima)); #se prima e dopo l'intervallo la lunghezza e' uguale
then
echo "Non Cambiato" #effettua il kill del processo e lo riavvia
kill -9 $(pidof nome_programma) #mettere come parametro di pidoff il nome del programma da killare
nome_programma #mettere qui il nome del programma da far ripartire
fi

prima=$dopo #scambia il valore delle variabili per il prossimo ciclo
sleep 30 #intervallo di scansione del file di log
done
-----------------------------------------------------------------------------

lunedì 31 marzo 2014

Copiare linee da file testo con Bash

Su richiesta di un amico, c'era la necessita' di estrarre solo le righe pari (o dispari) da un file testo puro usando Bash

il primo tentativo e' stato fatto con un ciclo for
--------------------------------------------
for i in `seq 1 2 10`;
do
   
    comando="sed -n "$i"p file1.txt >> file2.txt"
    eval $comando
done
---------------------------------------------

in realta' il comando sed ha gia' al suo interno questa possibilita', infatti lo switch p permette di indicare a quale riga iniziare a quante righe saltare. per esempio nell'esempio sottostante vengono salvate una riga si' ed una no partendo da 1
---------------------------------------------
sed -n 1~2p file1.txt >> file2.txt
---------------------------------------------

mercoledì 21 agosto 2013

Apici inversi in Bash

Riprendendo il precedente post si puo' sostituire l'apice inverso  come segue

apt-get install linux-headers-`uname -r`

puo' essere scritto come

apt-get install linux-headers-$(uname -r)

lunedì 8 ottobre 2012

Snippet : apici inversi in Bash

Una cosa che mi scordo regolarmente quando utilizzo bash ovvero come si crea il carattere apice rovescio su tastiere che ne sono sprovviste

La soluzione e' semplice

Alt Gr + apice diritto

Esempio con GUI con Zenity in shell Bash

Mentre stavo giocando con airoscript mi sono accorto di un script bash che mostrava delle simpatiche finestre di interfaccia; curiosando dentro il codice ho visto che il generatore delle finestre era Zenity, un programma studiato appositamente per rendere piu' interattiva la shell

Impiegando questo strumento e' stato possibile simulare un esempio di GUI da Bash
---------------------------------------------------------------
VALUE=`zenity --scale --text="Selezionare il valore" --value=0`

case $? in
    0)
        zenity --info --text="E'stato selezionato il valore $VALUE%"
        zenity --progress --title="Progress Bar" --text="Valore selezionato $VALUE%" --percentage=$VALUE;;
    1)
        zenity --error --text="Nessun valore selezionato";;
    -1)
        zenity --info --text="Errore non atteso";;
esac
---------------------------------------------------------------
Qui il link allo script



Opencv camera calibration in cpp

Oltre che con uno script Python come visto qui la calibrazione della camera si puo' fare anche con il programma in CPP Questo il proce...