Manipolazione file da shell bash

sort
Questo comando ordina un flusso di testo, o un file, in senso crescente o decrescente, o secondo le diverse interpretazioni o posizioni dei caratteri.

uniq
Questo filtro elimina le righe duplicate di un file che è stato ordinato. È spesso usato in una pipe in coppia con sort.
-c premette ad ogni riga del file di input il numero delle sue occorrenze.

grep
è un comando bash dalla sintassi semplicissima che ci permette di ricercare all’interno dei file la presenza o meno di stringhe di testo, passando tali stringhe come variabili ben definite o come espressioni regolari.
possiamo utilizzare il punto come carattere “jolly”
–v, esegue l’operazione inversa mostrando tutte le righe in cui l’espressione non è presente.
–r estende la ricerca delle occorrenze in modo ricorsivo su tutti i files contenuti nelle sottocartelle in cui eseguiamo il comando. ci restituirà il nome del file in cui questa occorrenza esiste.

awk
Awk suddivide ogni riga dell’input che gli è stato passato in campi. Normalmente, un campo è una stringa di caratteri consecutivi separati da spazi, anche se esistono opzioni per modificare il delimitatore. Awk, quindi, analizza e agisce su ciascun singolo campo. Questo lo rende ideale per trattare file di testo strutturati — in particolare le tabelle — e dati organizzati in spezzoni logici, come righe e colonne.
echo uno due | awk ‘{print $1}’
# uno

echo uno due | awk ‘{print $2}’
# due

awk ‘{print $3}’ $nomefile
# Visualizza allo stdout il campo nr.3 del file $nomefile.

awk ‘{print $1 $5 $6}’ $nomefile
# Visualizza i campi nr.1, 5 e 6 del file $nomefile.

estrae gli indirizzi email
gawk -v RS='[^[:space:][:punct:]]+@[^[:space:][:punct:]]+[.][^[:space:][:punct:]]+’ ‘RT{print RT}’

head
Mostra le prime righe di un file di testo
tail
Mostra le ultime righe di un file di testo
cmp
confronta due file
wc
visualizza numero di righe, parole e caratteri di un file

[0-9a-zA-Z_/./-]+[@]{1}[0-9a-zA-Z_/./-]+

Send data from raspberry pi / banana pi to arduino

for Raspberry pi
git clone git://git.drogon.net/wiringPi
cd wiringPi
chmod +x build
./build

for banana pi
git clone https://github.com/LeMaker/WiringBPi.git
cd WiringBPi
chmod +x build
./build

Edit source before build for change pin

both pi
git clone --recursive git://github.com/ninjablocks/433Utils.git
make codesend

Arduino
Download and install library rc-switch from
https://github.com/sui77/rc-switch

usage from shell
./codesend 12345

arduino wrote in serial monitor (sketch ReceiveDemo_Simple from rc-switch example)
Received 12345 / 24bit Protocol: 1

for antenna look this

Install dymo labelwriter on debian / linux & print from shell

apt-get install cups

scarico driver da dymo
cerchi so google dymo linux e esce la pagina, copi il link e…
wget http://download.dymo.com/Software/Linux/dymo-cups-drivers-1.4.0.tar.gz

Uncompress:
tar -zxvf dymo-cups-drivers-1.4.0.tar.gz

install dependencies
sudo apt-get install libcups2-dev
sudo apt-get install libcupsimage2-dev

Complile:
./configure
make
sudo make install

Configuring cups from web interface

for access to web interface from others machine in the lan:

edit /etc/cups/cupsd.conf  and replace:

Listen localhost:631

with

port 631

Add allow machine from lan in cupsd.conf (Allow From 192.168.1.0/255.255.255.0) :

# Limita l'accesso al server....
# Il default permette solo a locahost di accedre
<Location />
   Order allow,deny
   Allow From localhost
   Allow From 192.168.1.0/255.255.255.0
</Location>

# Limita l'accesso alla pagina di amministrazione...
<Location /admin>
   # La cifratura è disbilitata di default
   #Encryption Required
   Order allow,deny
   Allow From localhost
   Allow From 192.168.1.0/255.255.255.0

# Limita l'accesso alla pagina di configurazione...
<Location /admin/conf>
   AuthType Basic
   Require user @SYSTEM
   Order allow,deny
   Allow From localhost
   Allow From 192.168.1.0/255.255.255.0
</Location>

access to web interface with http://<ipmachine>:631

2015-03-26 19_16_25-Amministrazione - CUPS 1.5.3

2015-03-26 19_17_18-Aggiungi stampante - CUPS 1.5.3

2015-03-26 19_18_03-Aggiungi stampante - CUPS 1.5.3

2015-03-26 19_18_57-Aggiungi stampante - CUPS 1.5.3

2015-03-26 19_19_46-Imposta opzioni stampante - CUPS 1.5.3

For print image from shell:
lpr -P DYMO -o ppi=300 targa.bmp

For see the options of printer:
lpoptions -p PRINTER_NAME -l

telegram_logo

Set telegram-cli as daemon in debian based distro

Create a bash script in /etc/init.d with name telegramd

/etc/init.d/telegramd

#! /bin/sh
### BEGIN INIT INFO
# Provides:          telegram
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Commandline interface for Telegram
# Description:       Telegram-cli is a (unofficial) cli version of Telegram to chat from your console.
#                    This is an init script do make it a daemon.
#                    When used as daemon in conjuction  with LUA (scripting) you can use it to send your system
#                    commands to execute via other Telegram apps (PC - Phone - Web or other) while not
#                    logged in to the system.
#                    See: https://github.com/vysheng/tg for more information.
### END INIT INFO

DESC="Telegram Cli Daemon"
NAME=telegramd
PIDFILE=/var/run/$NAME.pid

. /lib/lsb/init-functions

# Carry out specific functions when asked to by the system
case "$1" in

    start)
        echo -n "Starting $DESC ... "
        start-stop-daemon --start --background --make-pidfile $PIDFILE --pidfile $PIDFILE \
            --exec /usr/bin/telegram -- -k /etc/telegram/server.pub -c /etc/telegram/telegram-cli/config -s /etc/telegram/action.lua -d -vvvv -E -R -D -C -P 2301 || true
        echo "Done."
    ;;

    stop)
        echo -n "Stopping $DESC ... "
        start-stop-daemon --stop --retry 2 --pidfile $PIDFILE \
            --exec /usr/bin/telegram || true
    echo "Done."

    ;;
    restart)
        echo -n "Restarting $DESC "
        start-stop-daemon --stop --retry 2 --pidfile $PIDFILE \
            --exec /usr/bin/telegram || true
        start-stop-daemon --start --background --make-pidfile $PIDFILE --pidfile $PIDFILE \
            --exec /usr/bin/telegram -- -k /etc/telegram/server.pub -c /etc/telegram/telegram-cli/config -s /etc/telegram/action.lua -d -vvvv -E -R -D -C -P 2301 || true
        echo "Done."
    ;;

    status)
        status_of_proc -p $PIDFILE telegram $NAME && exit 0 || exit $?
    ;;

    *)
        N=/etc/init.d/$NAME
        echo "Usage $NAME: /etc/init.d/telegramd {start|stop|restart|status}"
        exit 1
    ;;

esac

set correct permission:
chmod 755 telegramd

set the service for automatic start
update-rc.d telegramd default

Use:
service telegramd start
service telegramd stop
service telegramd status

for send message from shell or another script use
echo "msg CONTACT_NAME text" | nc -w 5 localhost 2301

lua script for telegram-cli, process incoming messages

Install library:
apt-get install lua-lgi libjson-glib-dev

process.lua:

function on_msg_receive (msg)
  if started == 0 then
    return
  end
  if msg.out then
    return
  end


  if (msg.text == 'ping') then
    if (msg.to.id == our_id) then
      send_msg (msg.from.print_name, 'pong', ok_cb, false)
    else
      send_msg (msg.to.print_name, 'pong', ok_cb, false)
    end
    return
  end
  if (msg.text == 'PING') then
    if (msg.to.id == our_id) then
      fwd_msg (msg.from.print_name, msg.id, ok_cb, false)
    else
      fwd_msg (msg.to.print_name, msg.id, ok_cb, false)
    end
    return
  end
end

function on_our_id (id)
  our_id = id
end

function on_user_update (user, what)
  --vardump (user)
end

function on_chat_update (chat, what)
  --vardump (chat)
end

function on_secret_chat_update (schat, what)
  --vardump (schat)
end

function on_get_difference_end ()
end

function cron()
  -- do something
  postpone (cron, false, 1.0)
end

function on_binlog_replay_end ()
  started = 1
  postpone (cron, false, 1.0)
end

Use:
telegram -k /etc/telegram/server.pub -c /etc/telegram/telegram-cli/config -s /etc/telegram/process.lua

script shell send telegram msg with expect

First read this post for install and configure telegram

Create a new script named sendtg:

#!/usr/bin/expect
set timeout 2
set msg [lindex $argv 1]
set dest [lindex $argv 0]
spawn telegram -k /etc/telegram/server.pub -c /etc/telegram/telegram-cli/config -W
expect "> "
sleep 10
send "\rmsg $dest $msg\r"
expect "> "
expect eof

Config

move the script in /usr/bin:
mv sendtg /usr/bin/sendtg

and set correct permission:
chmod +x /usr/bin/sendtg

Usage

sendtg User “message to send”

how to set disk standby timeout

For manage disk install the utility hdparm
in debian/ubuntu/rasbian/bananian:

apt-get install hdparm

running the command:

hdparm -S60 /dev/sda

set temporary set timeout spindown disk.

for finally set,  edit the file /etc/hdparm.conf:

/dev/sda {
      spindown_time = 180
}

/dev/sda is the device to managed, here sda is the sata disk on my banana pi.