bash

You are currently browsing articles tagged bash.

Il nano sconcio Nonostante gli unici commenti in questo blog siano stati di spam, ho deciso di eliminarli ugualmente.

Gli ip di provenienza degli spammer non erano, nel mio caso, più di quattro o cinque, così ho deciso di utilizzare la tecnica delle blacklist.

Malgrado assolva al proprio compito, non è sicuramente la tecnica migliore da utilizzare, visto che rischia di bloccare persone che con lo spam nulla hanno a che fare.
Ad esempio si rischia di bloccare ip dinamici, ip di proxy ecc. ecc.

Ad ogni modo se si vuole bloccare un insieme limitato di ip credo sia una tecnica che possa tornare utile.

Si può procedere in diversi modi, ad esempio utilizzando l’.htaccess, negando, o ridirezionando le connessioni al webserver da certi ip, come descritto qui, oppure più radicalmente, utilizzando iptables.

Nel mio caso ho preferito utilizzare iptables.

Il funzionamento è molto semplice, leggo dalla mia blacklist,
/etc/blacklister/blacklist.dat
e imposto per ogni ip due regole di iptables, la prima per loggare il tentativo di accesso, la seconda per bloccare.

Semplice ed efficace.

[c]
#!/bin/bash

# Blacklister
# ===============
#
# ATTENZIONE!
# Questo script non e’ pensato per essere
# usato su un firewall, ma solo su un webserver.
#
# A cosa serve
# ————
# Si prefigge di limitare lo spam in ingresso
# bloccando le connessioni degli
# IP acquisiti come spammer.
#
# Cosa fa
# ——-
# Legge il file blacklist.dat contenente un elenco di ip da
# bloccare uno per riga, e, tramite **iptables** logga
# come SPAM i tentativi di accesso e li blocca.

LOCALFILE=/etc/blacklister/blacklist.dat

IFACE=eth0

# IpTables
IPT=”/sbin/iptables”

# Chain
CHAIN=INPUT

start_firewall()
{
# Blacklist
blacklist=$(cat $LOCALFILE)

# Solo per debug
# set -x

# Carico i moduli necessari
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp

# Azzero le iptable prima di cominciare
stop_firewall

echo -n “Starting firewall:”
block_spam
echo ” done.”
}

block_spam()
{
# Per ogni IP LOG e DROP
for ip in $blacklist
do
$IPT -A $CHAIN -i $IFACE -s $ip -j LOG –log-prefix “SPAM ”
$IPT -A $CHAIN -i $IFACE -s $ip -j DROP
done

}

stop_firewall()
{
echo -n “Stopping firewall:”

$IPT –flush
$IPT -t nat –flush
$IPT -t mangle –flush

$IPT –policy INPUT ACCEPT
$IPT –policy OUTPUT ACCEPT

echo ” done.”
}

case $1 in
start)
start_firewall
;;
stop)
stop_firewall
;;
restart)
start_firewall
;;
*)
echo “Usage: $0 {start|stop|restart}”
exit 1
;;
esac
[/c]

Tags: , ,

logo-apple
Possiamo creare uno script per modificare l’aspetto del Dock, da 3D a 2D e viceversa sempre utilizzando defaults come avevamo spiegato qui.

Questa volta però sfruttiamo le preferenze del dock, memorizzate in com.apple.dock.
In particolare l’opzione no-glass.

Per verificare le impostazioni correnti lanciamo il seguente comando da terminale:
defaults read com.apple.dock no-glass

restituirà 0 se attualmente il dock è in 3D o 1 se è in 2D.

Di seguito il semplice script.

[c]
#!/bin/sh
CURRENT=`defaults read com.apple.dock no-glass`
case $CURRENT in
0)
OPTION=’YES’
;;
1)
OPTION=’NO’
;;
*)
OPTION=’YES’
;;
esac

defaults write com.apple.dock no-glass -boolean $OPTION
killall Dock
echo “Riavvio il dock…”
[/c]

Tags: , ,

logo-appleHo scritto un semplice script per mostrare e nascondere i file normalmente invisibili al Finder.

Si avvale del comando defaults che permette di leggere, scrivere ed eliminare le impostazioni utente di OSX.

Come riporta il manuale:

Le applicazioni di Mac OS X ed altri programmi usano il sistema dei defaults per memorizzare le preferenze utente ed altre informazioni che devo essere mantenute quando l’applicazione non è in esecuzione (ad esempio i caratteri di default per un nuovo documento o la posizione delle finestre ecc.).
Alcune impostazioni sono accessibili dalle Preferenze di sistema, ma altre no.

Il Finder non fa eccezione, ed una delle impostazioni accessibili solo attraverso defaults, è AppleShowAllFiles, che definisce appunto se mostrare o nascondere i file invisibili.

Per visualizzare l’impostazione corrente possiamo digitare da terminale:

defaults read com.apple.finder AppleShowAllFiles

Che ci restituirà rispettivamente 0 o 1 se è impostato per nascondere o per mostrare i file invisibili.

Detto questo lo script è banale.

[c]
#!/bin/sh

CURRENT=`defaults read com.apple.finder AppleShowAllFiles`
case $CURRENT in
0)
OPTION=’YES’
;;
1)
OPTION=’NO’
;;
*)
OPTION=’NO’
;;
esac

defaults write com.apple.finder AppleShowAllFiles -boolean $OPTION
killall Finder
echo “Riavvio il Finder…”
[/c]

Tags: , ,