varnishadm -S /etc/varnish/secret -T :6082 "url.purge .*" varnishadm -S /etc/varnish/secret -T :6082 'purge req.http.host == "blog.hio.fr"' varnishadm -S /etc/varnish/secret -T :6082 'purge req.url ~ .(xml|txt)'
Category Archives: bash
pureftpd_adduser.sh
#!/bin/bash # ftp ftp_root="/home/ftp" ftp_host="ftp.host.com" ftp_port="21" ftp_user=$1 ftp_passwd=`pwgen -y 12 1` ftp_owner="www-data:www-data" ftp_perm="555" ftp_uid="33" ftp_gid="33" # mysql mysql_user="PUREUSER" mysql_db_name="DBNAME" mysql_table="TABLE" mysql_passwd="PASSWORD" # lftp lftp_bin="/usr/bin/lftp" function usage { echo "Usage:" echo "$0 ftp_user" } if [[ $1 == "" ]]; then usage exit 1 fi if [ ! -d "$ftp_root/$ftp_user" ]; then echo "create user home dir $ftp_root/$ftp_user" mkdir $ftp_root/$ftp_user chown $ftp_owner $ftp_root/$ftp_user chmod $ftp_perm $ftp_root/$ftp_user echo "create user $ftp_user" mysql -u"$mysql_user" -p"$mysql_passwd" <<EOF INSERT INTO $mysql_db_name.$mysql_table (User, status, Password, Uid, Gid, Dir, ULBandwidth, DLBandwidth, comment, ipaccess, QuotaSize, QuotaFiles) VALUES ('$ftp_user', '1', MD5('$ftp_passwd'), '$ftp_uid', '$ftp_gid', '$ftp_root/$ftp_user', '0', '0', '', '*', '0', '0'); EOF echo "## FTP USER ##" echo "host: $ftp_host" echo "port: $ftp_port" echo "login: $ftp_user" echo "password: $ftp_passwd" echo "## TEST ACCOUNT ##" if [ -f "$lftp_bin" ]; then $lftp_bin -u $ftp_user,$ftp_passwd localhost -e "ls;quit" else echo "lftp ($lftp_bin) not found" fi echo "done." else echo "user $ftp_user already exists" fi
find + grep
find . -name "*.html" -type f -exec grep -irl "data:," {} \;
fix_db_host.sh
#!/bin/bash www_dir="/home/www" for i in `ls $www_dir` do mkdir -p /tmp/$i/ sed -e 's/old.database.com/new.database.com/g' $i/wp-config.php > /tmp/$i/wp-config.php mv /tmp/$i/wp-config.php $www_dir/$i/wp-config.php rmdir /tmp/$i/ done
migrate_wordpress.sh
#!/bin/bash # SSH ssh_host="source.host.tld" ssh_user="hio" ssh_port="22" ssh_key="/home/hio/.ssh/id_rsa" www_dir="/www/blogs/" # WWW vhost_template="/home/hio/blog.vhost" blog=$1 vhost_server_name=$2 # REMOTE remote_tmp_dir="/home/hio/tmp" remote_mysql_root="root" remote_mysql_password="password" # LOCAL local_tmp_dir="/tmp" local_mysql_root="root" local_mysql_password="password" if [ ! -f "$blog/wp-config.php" ]; then echo 'COPY WORDPRESS FILES...' scp -r -P$ssh_port -i$ssh_key $ssh_user@$ssh_host:/$www_dir/$blog . db_host=`grep 'DB_HOST' $blog/wp-config.php|awk -F "'" '{print $4}'` db_name=`grep 'DB_NAME' $blog/wp-config.php|awk -F "'" '{print $4}'` db_user=`grep 'DB_USER' $blog/wp-config.php|awk -F "'" '{print $4}'` db_password=`grep 'DB_PASSWORD' $blog/wp-config.php|awk -F "'" '{print $4}'` echo "DB_HOST: $db_host" echo "DB_NAME: $db_name" echo "DB_USER: $db_user" echo "DB_PASSWORD: $db_password" echo "DUMP REMOTE DB TO $remote_tmp_dir/$db_name.sql" ssh -i$ssh_key $ssh_user@$ssh_host -p $ssh_port <<EOF>> /dev/null 2>&1 mkdir -p $remote_tmp_dir cd $remote_tmp_dir mysqldump --user=$remote_mysql_root --password=$remote_mysql_password -c $db_name > $remote_tmp_dir/$db_name.sql EOF echo "GET REMOTE DB $remote_tmp_dir/$db_name.sql TO $local_tmp_dir" scp -i$ssh_key -P$ssh_port $ssh_user@$ssh_host:$remote_tmp_dir/$db_name.sql $local_tmp_dir echo "CREATE USER '$db_user'@'localhost' IDENTIFIED BY '$db_password';" echo "CREATE DATABASE $db_name;" echo "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' WITH GRANT OPTION;" mysql -u"$local_mysql_root" -p"$local_mysql_password" <<EOF CREATE USER '$db_user'@'localhost' IDENTIFIED BY '$db_password'; CREATE DATABASE $db_name; GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' WITH GRANT OPTION; EOF echo "IMPORT DUMP $local_tmp_dir/$db_name.sql TO DATABASE $db_name" mysql -u"$local_mysql_root" -p"$local_mysql_password" $db_name < $local_tmp_dir/$db_name.sql echo "REMOVE LOCAL/REMOTE $db_name DUMP" rm $local_tmp_dir/$db_name.sql ssh -i$ssh_key $ssh_user@$ssh_host -p $ssh_port <<EOF>> /dev/null 2>&1 rm $remote_tmp_dir/$db_name.sql EOF fi if [ ! -f "/etc/apache2/sites-available/$vhost_server_name" ]; then echo "CREATE VHOST FOR $vhost_server_name" cat $vhost_template|sed "s/%BLOG_NAME%/"$vhost_server_name"/g" > /etc/apache2/sites-available/$vhost_server_name; fi if [ ! -f "/etc/apache2/sites-enabled/$vhost_server_name" ]; then echo "LINK /etc/apache2/sites-enabled/$vhost_server_name /etc/apache2/sites-available/$vhost_server_name" ln -s /etc/apache2/sites-available/$vhost_server_name /etc/apache2/sites-enabled/$vhost_server_name fi chown www-data:www-data -R $blog
<VirtualHost *:8080>
ServerAdmin romain.bureau@bayard-presse.com
DocumentRoot /home/www/%BLOG_NAME%/
ServerName %BLOG_NAME%
ErrorLog ${APACHE_LOG_DIR}/%BLOG_NAME%-error.log
CustomLog ${APACHE_LOG_DIR}/%BLOG_NAME%-access.log combined
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
<directory /home/www/%BLOG_NAME%/>
Options -Indexes +ExecCGI
AllowOverride All
order allow,deny
Allow from all
</directory>
</VirtualHost>cd /var/www bash /home/hio/migrate_wordpress.sh blog.hio.fr blog.hio.fr
Comment minifier le js et css d’un projet symfony simplement
Comment minifier le css et le javascript de son projet symfony
On telecharge yuicompressor chez yahoo yuicompressor
pour des besoin de pure fainéantise, on créé le minify.sh a coter de l’exécutable symfony, on met le .jar de yuicompressor dans le même répertoire ou ailleurs mais il faudra le changer dans le script dans se cas là
emacs ou vim minify.sh et on colle ça dedant
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #!/bin/bash yui='./yuicompressor-2.4.2.jar' # le path du .jar de yuicompressor css='./web/css/style.min.css' # le path du css minifier js='./web/js/be-geek.min.js' # le path du js minifier if [ -f "$css" ]; then echo "rm: $css" rm $css fi if [ -f "$css.gz" ]; then echo "rm: $css.gz" rm $css.gz fi if [ -f "$js" ]; then echo "rm: $js" rm $js fi if [ -f "$js.gz" ]; then echo "rm: $js.gz" rm $js.gz fi for i in `ls ./web/css/` do echo $i java -jar $yui --type css ./web/css/$i >> $css done for i in `ls ./web/js/` do echo $i java -jar $yui --type js ./web/js/$i >> $js done echo "gzip $css > $css.gz" gzip -c -n -3 $css > $css.gz echo "gzip $js > $js.gz" gzip -c -n -3 $js > $js.gz echo 'done' |
ensuite
bash minify.shce qui nous donne
hio@jupiter:~/www/be-geek.com/trunk$ bash minify rm: ./web/css/style.min.css rm: ./web/css/style.min.css.gz rm: ./web/js/be-geek.min.js rm: ./web/js/be-geek.min.js.gz jquery.lightbox-0.5.css main.css slides.css style01.css jquery.be-geek.js jquery.lightbox-0.5.min.js slides.jquery.js gzip ./web/css/style.min.css > ./web/css/style.min.css.gz gzip ./web/js/be-geek.min.js > ./web/js/be-geek.min.js.gz done
et dans le view.yml, on vire les autres .js et .css et on ne met plus que les fichier .js et .css minifier
stylesheets: [style.min.css] javascripts: [monjs.min.js]
voila c’était trop dur
BASH Comment tester si un repertoire existe
Voila un petit bout de bash pour tester l’existence d’un repertoire ou d’un fichier
1 2 3 4 5 | #!/bin/bash dir="/home/hio/test" if [ -d "$dir" ]; then echo "$dir existe !" fi |
et en rajoutant un else ^^
1 2 3 4 5 6 7 | #!/bin/bash dir="/home/hio/test" if [ -d "$dir" ]; then echo "$dir existe !" else echo "$dir n'existe pas!" fi |
et en inversant le test on rajoute juste un « ! » devant le « -d »
1 2 3 4 5 6 7 | #!/bin/bash dir="/home/hio/test" if [ ! -d "$dir" ]; then echo "$dir n'existe pas!" else echo "$dir existe !" fi |
Voila, c’est pas tres compliquer ^^ et pour tester l’existence d’un fichier, on remplace juste le « -d » par un « -f »
iptables.sh
iptables.sh
#!/bin/bash set -e iptables="/sbin/iptables" modprobe="/sbin/modprobe" allowporttcp="80 443 6667 6669" allowportudp="1194" allowporttcptoip="7000" whitelist="82.225.**.** 81.56.**.** 81.57.**.**" blacklist="74.52.74.** 213.23.175.** 81.2.210.** 60.242.109.**" load () { #echo "Loading kernel modules..." #$modprobe ip_tables #$modprobe ip_conntrack #$modprobe iptable_filter #$modprobe ipt_state #echo "Kernel modules loaded." echo "Loading rules..." $iptables -P FORWARD DROP $iptables -P INPUT DROP $iptables -N blacklist $iptables -A INPUT -i eth0 -j blacklist for i in $allowporttcp do $iptables -A INPUT -p tcp -m tcp --destination-port $i -j ACCEPT echo "Allow port : $i/tcp" done for i in $allowportudp do $iptables -A INPUT -p udp -m udp --destination-port $i -j ACCEPT echo "Allow port : $i/udp" done for i in $allowporttcptoip do for j in $whitelist do $iptables -A INPUT -p tcp -m tcp --destination-port $i -s $j -j ACCEPT echo "Allow port : $i/tcp for $j" done done for i in $blacklist do $iptables -s $i -j DROP -A blacklist echo "$i blacklisted" done for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $i echo "1 > $i" done $iptables -A INPUT -p icmp -j ACCEPT $iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT $iptables -A INPUT -s 127.0.0.1 -j ACCEPT echo "Rules loaded." } blacklist () { $iptables -L blacklist -n $iptables -L blacklist } flush () { echo "Flushing rules..." $iptables -F $iptables -X $iptables -t mangle -F $iptables -t mangle -X $iptables -P INPUT ACCEPT $iptables -P FORWARD ACCEPT $iptables -P OUTPUT ACCEPT echo "Rules flushed." } case "$1" in start|restart) flush load ;; stop) flush ;; blacklist) blacklist ;; *) echo "usage: start|stop|restart|blacklist." ;; esac exit 0
Utilisation
iptables.sh start|stop|restart|blacklist
BASH Comment convertir du flac en mp3
Voila un petit script avec rien de révolutionnaire qui permet de convertir tout un répertoire de fichier au format flac en mp3
Les dépendances
sudo apt-get install id3v2 flac lame
Le script flac2mp3.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!/bin/bash output_dir="/data/sda1/music/CONVERTING_OUTPUT/$1" lame_opts="--vbr-new -V 2 -b 128 -B 256" flac_args="--silent -cd" if [ ! -d "$output_dir" ]; then mkdir "$output_dir" echo "create dir: $output_dir" fi for file in *.flac do ARTIST=`metaflac "$file" --show-tag=ARTIST | sed s/.*=//g` TITLE=`metaflac "$file" --show-tag=TITLE | sed s/.*=//g` ALBUM=`metaflac "$file" --show-tag=ALBUM | sed s/.*=//g` GENRE=`metaflac "$file" --show-tag=GENRE | sed s/.*=//g` TRACKNUMBER=`metaflac "$file" --show-tag=TRACKNUMBER | sed s/.*=//g` DATE=`metaflac "$file" --show-tag=DATE | sed s/.*=//g` flac $flac_args "$file" |lame $lame_opts - "$output_dir/${file%.flac}.mp3" id3v2 -t "$TITLE" -T "$TRACKNUMBER" -a "$ARTIST" -A "$ALBUM" -g "$GENRE" -y "$DATE" "$output_dir/${file%.flac}.mp3" done |
BASH Comment supprimer des repertoires vide
Une question simple avec une réponse tout aussi simple, comment qu’on fais pour virer un nombre N de répertoire vide sans devoir faire un ‘rm -rf’ a la main pour chaque répertoire.
Le find qui sert a supprimer tous les rpertoires vide d’un repertoire
find . -maxdepth 1 -type d -empty -exec sh -c 'rm -rf "{}" && echo "{}" deleted' \;
Je crée des répertoires bidon pour les tests :p
hio@fantasy:~/test$ mkdir {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,notemptydir} hio@fantasy:~/test$ echo maisblu > notemptydir/testfile hio@fantasy:~/test$ ls -l total 88 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 0 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 1 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 10 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 11 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 12 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 13 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 14 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 15 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 16 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 17 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 18 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 19 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 2 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 20 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 3 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 4 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 5 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 6 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 7 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 8 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 9 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 notemptydir
On execute le find ^^
hio@fantasy:~/test$ find . -maxdepth 1 -type d -empty -exec sh -c 'rm -rf "{}" && echo "{}" deleted' \; ./16 deleted ./10 deleted ./14 deleted ./15 deleted ./4 deleted ./17 deleted ./19 deleted ./2 deleted ./1 deleted ./7 deleted ./13 deleted ./3 deleted ./20 deleted ./12 deleted ./0 deleted ./18 deleted ./6 deleted ./8 deleted ./11 deleted ./5 deleted ./9 deleted hio@fantasy:~/test$ ls -l total 4 drwxr-xr-x 2 hio hio 4096 2009-06-15 22:09 notemptydir
Voila rien de bien sorcier ^^