# Pour les scripts : c'est ici

**URL:** <https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820>\
**Category:** Trucs et Astuces\
**Created:** [Février 20, 2016, 12:53 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820 "2016-02-20T12:53:11Z")\
**Posts on this page:** 20\
**Page:** 17

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 5:38 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/322 "2016-02-21T17:38:37Z")

</div>

Petit script trouvé ici [0] , pour lancer n’importe quelle commande, et qu’elle soit listée en premier les prochaines fois.  
Terminer une commande par “;” permet de la lancer dans un terminal

[code]#!/bin/sh

# end a command with ; to run in a terminal

. ~/.dmenurc

DMENU=“dmenu -i $OPTIONS"  
TERMI=“st -e"  
CACHE=”$HOME/.dmenu\_cache\_recent”

touch $CACHE  
MOST\_USED=`sort $CACHE | uniq -c | sort -r | colrm 1 8`  
RUN=`(echo "$MOST_USED"; dmenu_path | grep -vxF "$MOST_USED") | $DMENU $@` &&  
(echo $RUN; head -n 99 $CACHE) \> $CACHE.$$ &&  
mv $CACHE.$$ $CACHE

case $RUN in  
\*😉 exec `echo $TERMI $RUN | sed -e 's/;$//'`;;  
\*) exec $RUN;;  
esac  
[/code]

[0] : [bbs.archlinux.org/viewtopic.php?id=56646&p=12](https://bbs.archlinux.org/viewtopic.php?id=56646&p=12)

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 5:38 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/323 "2016-02-21T17:38:39Z")

</div>

fonction à mettre dans son .bashrc pour facilement uploader des captures d’écran sur son serveur (scp), et coller le résultat sur un forum :  
Remplacez :

- pi:/ par [utilisateur@votredomaine.net](mailto:utilisateur@votredomaine.net)😕 si vous n’avez pas de clés ssh et devez mettre votre mot de passe
- /home/pi/site/scrot par le dossier où sont stockés les screenshots sut votre serveur
- 2222 par votre port ssh
- [yeuxdelibad.net/scrot](http://yeuxdelibad.net/scrot) par l’adresse de votre site amenant jusqu’aux screenshots.

Preuve que ça marche : [![](http://yeuxdelibad.net/scrot/2013-06-20-scrot-thumb.png)](http://yeuxdelibad.net/scrot/2013-06-20-scrot.png)

```auto
sscrot() {
    D="$(date +%Y-%m-%d)"
    mkdir -p /tmp/scrot
    cd /tmp/scrot
    scrot -t 25 $D-scrot.png
    optipng $D-scrot.png
    optipng $D-scrot-thumb.png
    scp -P 2222 $D-scrot.png pi:/home/pi/site/scrot/
    scp -P 2222 $D-scrot-thumb.png pi:/home/pi/site/scrot/
    URL="[url=http://yeuxdelibad.net/scrot/$D-scrot.png][img]http://yeuxdelibad.net/scrot/$D-scrot-thumb.png[/img][/url]"
    echo $URL
    echo $URL |xclip
    rm /tmp/scrot/$D*.png
}
```

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 5:38 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/324 "2016-02-21T17:38:44Z")

</div>

Et un autre pour la route. Le script permet de chercher et replacer du texte dans les fichiers :

[code]#! /bin/sh

# sere: SEarch & REplace :: nibble at [develsec.org](http://develsec.org)

if [$# -ne 3]; then  
echo "usage: sere ";  
exit 1;  
fi;  
for file in `find $1`; do  
[! -d $file] && sed -i “s/$2/$3/g” $file;  
echo “-\> $file”;  
done;  
echo “DONE”;  
exit 0;  
[/code]  
[nibble.develsec.org/hg/toys/file … 59fc7/sere](http://nibble.develsec.org/hg/toys/file/ddaf55c59fc7/sere)

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 5:39 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/325 "2016-02-21T17:39:35Z")

</div>

[quote=“thuban”]Et un autre pour la route. Le script permet de chercher et replacer du texte dans les fichiers :

[code]#! /bin/sh

# sere: SEarch & REplace :: nibble at [develsec.org](http://develsec.org)

if [$# -ne 3]; then  
echo "usage: sere ";  
exit 1;  
fi;  
find “$1” -type f -exec sed -i “s/$2/$3/g” {} +  
echo “DONE”;  
[/code]  
[nibble.develsec.org/hg/toys/file … 59fc7/sere](http://nibble.develsec.org/hg/toys/file/ddaf55c59fc7/sere)[/quote]

---

<div class="post-metadata">

**Author:** ![M3t4linux](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/5daacb/32.png) [@M3t4linux](https://www.debian-fr.org/u/M3t4linux)\
**Post date:** [Février 21, 2016, 5:39 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/326 "2016-02-21T17:39:35Z")

</div>

[quote=“MisterFreez”][quote=“thuban”]Et un autre pour la route. Le script permet de chercher et replacer du texte dans les fichiers :

[code]#! /bin/sh

# sere: SEarch & REplace :: nibble at [develsec.org](http://develsec.org)

if [$# -ne 3]; then  
echo "usage: sere ";  
exit 1;  
fi;  
find “$1” -type f -exec sed -i “s/$2/$3/g” {} +  
echo “DONE”;  
[/code]  
[nibble.develsec.org/hg/toys/file … 59fc7/sere](http://nibble.develsec.org/hg/toys/file/ddaf55c59fc7/sere)[/quote][/quote]

Oubli du commentaire Mr non?

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 5:39 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/327 "2016-02-21T17:39:35Z")

</div>

Merci pour la correction 🙂

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 5:39 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/328 "2016-02-21T17:39:36Z")

</div>

> [@M3t4linux](#):
>
> Oubli du commentaire Mr non?

J’ai subit une anesthésie je suis dans le coltar. Ma solution est plus simple (une seule ligne de commande) et plus rapide (on utilise moins le shell, on lance sed moins souvent), mais on a pas l’affichage au fur et à mesure.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 5:39 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/329 "2016-02-21T17:39:36Z")

</div>

Je suis entrain de me dire que je préfère généralement faire :

```auto

```

L’avantage c’est que tu ne modifie que les fichiers qui ont a être modifié (sed modifie les fichiers même s’il n’a rien à modifier dans le contenu). C’est utile avec make.

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 5:39 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/330 "2016-02-21T17:39:36Z")

</div>

> [@MisterFreez](#):
>
> [quote=«&nbsp;M3t4linux&nbsp;»]Oubli du commentaire Mr non?

J’ai subit une anesthésie je suis dans le coltar. Ma solution est plus simple (une seule ligne de commande) et plus rapide (on utilise moins le shell, on lance sed moins souvent), mais on a pas l’affichage au fur et à mesure.[/quote]  
Bah alors mon grand! Tu ferais mieux de te reposer 🙂

Lorsque j’ai vu ta première correction, je me suis dit «&nbsp;bah oui, c’est comme ça que t’avais fait le dernier coup imbécile!&nbsp;».

Par contre la deuxième solution, je n’y aurais pas pensé! Chouette! Elle n’a cependant pas le même effet. Elle ne change qu’une seule occurence, et ne modifie pas les fichiers «&nbsp;en place&nbsp;»

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 5:39 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/331 "2016-02-21T17:39:46Z")

</div>

> [@thuban](#):
>
> Par contre la deuxième solution, je n’y aurais pas pensé! Chouette! Elle n’a cependant pas le même effet. Elle ne change qu’une seule occurence, et ne modifie pas les fichiers «&nbsp;en place&nbsp;»

s\*\*\*\*d ! Tu joue sur les mots^W options !

```auto
sed -i "s/$2/$3/g" $(grep -rl "$2" "$1")
```

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 5:39 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/332 "2016-02-21T17:39:47Z")

</div>

[quote=“MisterFreez”]  
s\*\*\*\*d ! Tu joue sur les mots^W options ![/quote] ![:angelic-green:](https://www.debian-fr.org/uploads/default/original/1X/a194a847de0707628a1b23643f9f19b3c17e0278.gif "Green")

Au moins avec cette solution, ça ne va pas chercher dans les fichiers qui ne sont pas du texte, c’est ça?

---

<div class="post-metadata">

**Author:** ![agentsteel](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/97f17d/32.png) [@agentsteel](https://www.debian-fr.org/u/agentsteel)\
**Post date:** [Février 21, 2016, 6:25 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/333 "2016-02-21T18:25:05Z")

</div>

Dans la série «&nbsp;couic & dirty&nbsp;», voici un petit scriptounet pour télécharger vos clips favoris sur Youtube et les convertir en MP3 dans la foulée (le tout en mode batch) 😛

Pour l’utiliser, copier vos URLs youtube dans un fichier url.txt (une par ligne) puis lancer le script.

à vous l’intégrale de [Michel Sardouille](http://www.youtube.com/watch?v=Q6CVMWu1wTk) et de [Cornouille](http://www.youtube.com/watch?v=qwkDrhnS8yI) ![:033](https://www.debian-fr.org/uploads/default/original/1X/42cd8bd0447ecac24cdff1e26fa990a5c8442791.gif "petard")

```auto
#!/bin/bash
#
# youtube2mp3.sh : download video clips from youtube and convert them to mp3
#
# requirements : clive, avconv (ffmpeg)
#
# 1. create URL list in a "url.txt" file (one URL per line)
# 2. run this script
# 3. get a coffee
#

while read URL
do
 echo "Downloading : $URL"; clive -q -f best "$URL" && echo "OK"
done < url.txt

# convert all video files to mp3 (change bitrate if needed)
for f in *.{mp4,flv,webm}; do avconv -y -i "$f" -ab 160000 -ar 44100 "$f.mp3"; done

exit 0
```

---

<div class="post-metadata">

**Author:** ![Le\_Barde](https://www.debian-fr.org/user_avatar/www.debian-fr.org/le_barde/32/4330_2.png) [@Le\_Barde](https://www.debian-fr.org/u/Le_Barde)\
**Post date:** [Février 21, 2016, 6:41 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/334 "2016-02-21T18:41:39Z")

</div>

Ma petite contribution : voici une lib de logging que j’ai écrite et que j’utilise dans mes scripts.

Ce serait à parfaire : il faudrait rajouter deux niveaux de log-level : TRACE et DO\_NOT\_LOG.  
Il faudrait rajouter aussi un niveau d’output.

[code]CONF\_DIR=~/.config/mon\_script  
MAIN\_CONF=mon\_script.conf  
LOG\_DIR=$CONF\_DIR/log  
LOG\_FILE=$LOG\_DIR/mon\_script.log

LOGLEVEL=debug # debug, info, warn, error, critical

# Default values for MON\_SCRIPT

NAME=mon\_script  
VERSION=1.0  
DESC=“Description de mon script”

########################################

# Logging

########################################

# Include other functions

#DIRNAME=`dirname $0`  
#. $DIRNAME/lib-logging.sh || { echo “Include problem. Exiting.”; exit 2; }

# These functions assume the following vars are declared :

# LOG\_FILE, and eventually LOGLEVEL.

\_\_LIB\_LOGGING\_DEFAULT\_LOGLEVEL=warn

\_\_lib\_logging\_get\_message() {  
echo “[`date +'%y-%m-%d %H:%M:%S'`] $\*”  
}

logdebug() {  
case “$LOGLEVEL” in  
debug)  
\_\_lib\_logging\_get\_message “[debug] $\*” \>\> $LOG\_FILE  
;;  
\*)  
# Do nothing  
exit 0  
;;  
esac  
}

loginfo() {  
case “$LOGLEVEL” in  
debug|info)  
\_\_lib\_logging\_get\_message “[info] $\*” \>\> $LOG\_FILE  
echo “$@”  
;;  
\*)  
# Do nothing  
exit 0  
;;  
esac  
}

logwarn() {  
case “$LOGLEVEL” in  
debug|info|warn|"")  
\_\_lib\_logging\_get\_message “[warning] $\*” \>\> $LOG\_FILE  
echo “Warning: $@”  
;;  
\*)  
# Do nothing  
exit 0  
;;  
esac  
}

logerr() {  
case “$LOGLEVEL” in  
debug|info|warn|error)  
\_\_lib\_logging\_get\_message “[error] $\*” \>\> $LOG\_FILE  
echo “Error: $@” 1\>&2  
;;  
\*)  
# Do nothing  
exit 0  
;;  
esac  
}  
logerror() {  
logerr $@  
}

logcrit() {  
# Always log that !  
\_\_lib\_logging\_get\_message “[critical] $@” \>\> $LOG\_FILE  
echo “[CRIT] $@” 1\>&2  
}

# Function Log : first argument must be the

# logging level

log() {  
# Get the logging level  
if [! -z “$1”]; then  
case “$1” in  
debug)  
shift && logdebug $\*  
;;  
info)  
shift && loginfo $\*  
;;  
warn|warning)  
shift && logwarn $\*  
;;  
error|err)  
shift && logerr $\*  
;;  
critical|crit)  
shift && logcrit $\*  
;;  
_)  
logdebug "No loglevel $1 found. Printing to STDOUT."  
echo "$_"  
;;  
esac  
else  
if [-z “$LOGLEVEL”]; then  
LOGLEVEL=$DEFAULT\_LOGLEVEL  
logwarn "LOGLEVEL undefined. Assuming $\_\_LIB\_LOGGING\_DEFAULT\_LOGLEVEL as the default loglevel."  
fi  
logwarn "log: Missing arguments."  
fi  
exit 0  
}

########################################

# /end logging

########################################  
[/code]

On dit que c’est très mal de faire du développement applicatif en shell… je me rends compte que j’ai fait un vrai travail de développement directement comme ça, et ça marche plutôt bien !

---

<div class="post-metadata">

**Author:** ![Le\_Barde](https://www.debian-fr.org/user_avatar/www.debian-fr.org/le_barde/32/4330_2.png) [@Le\_Barde](https://www.debian-fr.org/u/Le_Barde)\
**Post date:** [Février 21, 2016, 6:41 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/335 "2016-02-21T18:41:39Z")

</div>

Script qui installe [strike]une backdoor[/strike] une clef SSH et un pont autossh sur la machine.

À n’utiliser que pour la maintenance ! Ce genre de pont serait très facilement repérable, de toute façon. Je l’utilise pour mes amis chez qui j’installe des linuxboxes.

[code]#!/bin/sh

# SM (SSH Maintenance) v 1.0

# Script d’installation d’une clef ssh

# Configuration pour créer un pont ssh (-R) automatiquement

# afin de permettre un accès root sur la machine cible.

# 

# Réalisé par Adrien Poupin ([contact@adrien-poupin.fr](mailto:contact@adrien-poupin.fr))

VERSION=1.0

# Define your own default vars

DEFAULT\_HOST=[mon-hote-par-defaut.com](http://mon-hote-par-defaut.com)  
DEFAULT\_USER=user-maintenance # Mon user par défaut  
DEFAULT\_PORT=65500 # Ce que vous voulez

# Error codes

SSH\_ERROR=10  
BAD\_PARAMS=11

print\_title()  
{  
sleep 0.5  
echo “\033[1;31m\* $1\033[0m”  
}

usage()  
{  
cat \<\<\_USAGE  
Usage : `basename $0` [-i]  
-h Afficher cette aide.  
-t, --test-only  
Teste uniquement les connexions et affiche les comman-  
des à effectuer pour la mise en place d’un tunnel  
SSH.  
-i, --install  
Installation. Modification de ~/.ssh/config en local,  
de ~/.ssh/authorized\_keys sur le serveur distnat, et  
ajout du script init.  
\_USAGE  
}

get\_info()  
{  
print\_title “Installation d’un pont SSH vers un serveur distant”

```
echo -n "Hôte cible ($DEFAULT_HOST) : "
read HOST
[-z "$HOST"] && HOST=$DEFAULT_HOST

echo -n "Utilisateur ($DEFAULT_USER) : "
read USER
[-z "$USER"] && USER=$DEFAULT_USER

echo -n "Commentaire (Défaut : 'hostname') : "
read COMMENT
[-z "$COMMENT"] && COMMENT=`hostname`

echo -n "Port à ouvrir sur l'hôte distant ($DEFAULT_PORT) : "
read REMOTE_PORT
[-z "$REMOTE_PORT"] && REMOTE_PORT=$DEFAULT_PORT

```

}

gen\_key()  
{  
print\_title “Création de la clef SSH"  
ssh-keygen -t rsa -q -C “$COMMENT - port ouvert : $REMOTE\_PORT” -f rsa\_id  
KEY=”$USER\_$HOST.key"  
PUBKEY="$KEY.pub"  
mv -v rsa\_id ~/.ssh/$KEY  
mv -v rsa\_id.pub ~/.ssh/$PUBKEY  
}

configure\_localhost()  
{  
print\_title "Configuration de la machine locale"  
if [-z $BOOL\_INSTALL]; then  
{  
echo -n "Configuration automatique de $HOME/.ssh/config (o/N) ? "  
read BOOL  
}  
else  
{  
BOOL=Y  
}  
fi

```
if ["$BOOL" = "Y" -o "$BOOL" = "y" -o "$BOOL" = "O" -o "$BOOL" = "o"]; then
{
    echo "Modification du fichier ~/.ssh/config"
    cat >> ~/.ssh/config <<EOF

```

Host $HOST  
Hostname $HOST  
Port 22  
User $USER  
IdentityFile ~/.ssh/$KEY  
EOF  
}  
fi

```
echo "TODO : rajouter un script ssh -R $REMOTE_PORT:localhost:$HOST $USER@$HOST"

```

}

install\_remote\_key()  
{  
print\_title "Installation de la clef sur le serveur distant"  
if [-z $BOOL\_INSTALL]; then  
{  
echo -n "Se connecter au serveur distant pour copier la clef (o/N) ? "  
unset BOOL  
read BOOL  
}  
else  
{  
BOOL=Y  
}  
fi

```
if ["$BOOL" = "Y" -o "$BOOL" = "y" -o "$BOOL" = "O" -o "$BOOL" = "o"]; then
{
    echo "Clef publique exportée : $(cat ~/.ssh/$PUBKEY)"
    echo "ssh $USER@$HOST ..."
    
    ssh $USER@$HOST "echo \"$(cat ~/.ssh/$PUBKEY)\" >> ~/.ssh/authorized_keys"
    
    [$? -ne 0] && print_title "Erreur SSH. Abandon." && exit $SSH_ERROR
    echo "... Installation réussie !"
}
fi

```

}

connection\_test()  
{  
print\_title "Test de la connexion : Vous ne devriez pas avoir à taper de mot de passe."  
ssh $USER@$HOST “test 1”

```
[$? -ne 0] && echo "Erreur SSH. Abandon." && exit $SSH_ERROR
echo "Test OK !"

```

}

test\_only()  
{  
print\_title "Simulation."  
cat \<\<_SIMULATION_  
Pour mettre en place le tunnel SSH vers le serveur distant :

1. Créer des clefs SSH avec  
~$ ssh-keygen -t rsa -q -C “$COMMENT - port ouvert : $REMOTE\_PORT” -f rsa\_id
2. Déplacer les clefs (et les renommer sous un nom parlant, ex. ~/.ssh/$HOST\_$USER) vers le répertoire ~/.ssh/
3. Ajouter la configuration sur localhost (~/.ssh/config) :  
Host $HOST  
Hostname $HOST  
Port 22  
User $USER  
IdentityFile ~/.ssh/MA\_CLEF\_PRIVÉE
4. Ajouter la clef publique (~/.ssh/MA\_CLEF\_PRIVÉE.pub) sur l’hôte distant dans ~/.ssh/authorized\_keys
5. Tester que le pont fonctionne bien :  
~$ ssh -R $REMOTE\_PORT:localhost:22 $USER@$HOST
6. Ajouter un script de démarrage ou un cron (nécessite autossh) :  
~$ screen -dmS autossh autossh -R $REMOTE\_PORT:localhost:22 $USER@$HOST  
_SIMULATION_  
exit 0;  
}

# 

# main()

# 

if [$# -ge “1”]; then  
{  
for i in `seq 1 $#`; do  
{  
case $1 in  
-i | --install) BOOL\_INSTALL=“1”;;  
-t | --test-only) DO\_NOTHING=“1”;;  
-h | --help) usage;;  
\*) echo “$1 : Mauvais argument”; usage; exit $BAD\_PARAMS ;;  
esac

```
    shift
}
done

```

}  
fi

sleep 0.5  
echo “\033[1;32mSSH Maintenance version $VERSION\033[0m”

# Test-only case : tells the user.

[! -z $DO\_NOTHING] && echo “Test-only : Mode de simulation seule.”

# Get the vars : HOST, USER and COMMENT

get\_info

# Test only

[! -z $DO\_NOTHING] && test\_only

# Generate the RSA keys to install on localhost and remote host.

gen\_key

# Configure the local machine to automatically make a bridge.

configure\_localhost

# Install the RSA key on remote host

install\_remote\_key

# Testing the connection

connection\_test

exit 0;[/code]

Vous remarquerez que ce n’est pas fini. En réalité lorsque je dois faire une install’, je télécharge le script depuis le client, je lance l’install’ et à la fin on me dit quoi rajouter, ce que je fais en root pour le screen autossh.

---

<div class="post-metadata">

**Author:** ![Le\_Barde](https://www.debian-fr.org/user_avatar/www.debian-fr.org/le_barde/32/4330_2.png) [@Le\_Barde](https://www.debian-fr.org/u/Le_Barde)\
**Post date:** [Février 21, 2016, 6:41 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/336 "2016-02-21T18:41:40Z")

</div>

abt : Another Backup Tool

J’ai développé ça il y a quelque temps, ça me permet de faire la sauvegarde de mon serveur.

Tout est là : [https://github.com/lebarde/abt](https://github.com/lebarde/abt)

La sauvegarde implique de faire des actions différentes selon ce qu’on sauvegarde (un dépôt, un répertoire, une base de données).  
Du coup, selon le type de chose à sauvegarder, j’ai défini des actions différentes.

Si vous avez des contributions, n’hésitez pas !

---

<div class="post-metadata">

**Author:** ![M3t4linux](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/5daacb/32.png) [@M3t4linux](https://www.debian-fr.org/u/M3t4linux)\
**Post date:** [Février 21, 2016, 6:44 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/337 "2016-02-21T18:44:12Z")

</div>

Une astuce piochée ici, et contre les spammeurs [http://korben.info/flooder-spammeurs.html](http://korben.info/flooder-spammeurs.html)

Qu’en pensez vous??

---

<div class="post-metadata">

**Author:** ![agentsteel](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/97f17d/32.png) [@agentsteel](https://www.debian-fr.org/u/agentsteel)\
**Post date:** [Février 21, 2016, 6:50 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/338 "2016-02-21T18:50:13Z")

</div>

Une petite variante du script [youtube2mp3.sh](http://youtube2mp3.sh) présenté un peu plus haut.

Cette version est prévue pour télécharger des albums entiers (1 album entier = 1 vidéo youtube) et séparer automatiquement les pistes de l’album concerné (merci [mp3splt](http://packages.debian.org/wheezy/mp3splt). Il faudra toutefois choisir manuellement l’album concerné dans la base [CDDB](https://fr.wikipedia.org/wiki/CDDB))

```auto
#!/bin/bash
#
# youtube-full2mp3.sh : download videos from youtube, convert them to mp3 and split tracks
#
# This version will automatically split audio tracks
# but you must enter the album name for the CDDB query
#
# requirements : clive, avconv (ffmpeg), mp3splt
# (all available in Debian 7.0+)
#
# 1. create URL list in a "url.txt" file (one youtube URL per line)
# 2. run this script
# 3. when asked, enter keywords for the CDDB query (artist name, album name...)
# 4. individual tracks will be put in the "tracks" sub-directory

while read URL; do
  echo "Downloading : $URL"; clive -q -f best "$URL" && echo "OK"
done < url.txt

for f in *.mp4 *.flv *.webm; do
  if [[-f "$f"]];then
    echo "--> Converting video file [$f] to mp3..."
    avconv -y -v info -i "$f" -ab 160000 -ar 44100 "$f.mp3"
    echo "--> Splitting audio tracks for [$f.mp3]..."
    mp3splt -a -c query[get=cddb_protocol://freedb.org:8880] -d tracks "$f.mp3"
  fi
done

echo " ***All done!***"
exit 0
```

---

<div class="post-metadata">

**Author:** ![agentsteel](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/97f17d/32.png) [@agentsteel](https://www.debian-fr.org/u/agentsteel)\
**Post date:** [Février 21, 2016, 7:23 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/339 "2016-02-21T19:23:36Z")

</div>

Capture audio/vidéo depuis une webcam

optimisé pour produire une vidéo au format mkv, avec le flux vidéo sans perte (preset “lossless”), le but du jeu étant d’obtenir une vidéo de qualité acceptable sans trop de perte de trames (dépend surtout de votre machine), que vous pourrez réencoder avant upload sur un site (avec ffmpeg2theora par exemple).

Utilisation :  
[mono]./capturecam.sh[/mono]  
ou  
[mono]./capturecam.sh fichier.mkv[/mono]

```auto
#!/bin/bash
#
# capturecam.sh : small script for webcam video & audio capturing, using avconv (ffmpeg)
# 

myframerate=25
myvideosize=vga
myaudiorate=44100

outfile="$1"
[[-z "$outfile"]] && outfile="capture-$(date +%F-%H-%M-%S)_$$.mkv"

# sound input: run alsamixer to know which hw: to use
# or you can use OSS compat : -f oss -i /dev/dsp1 (be sure to install oss-compat and load oss kernel modules)

avconv\
 -f alsa -i hw:1\
 -f video4linux2 -i /dev/video0\
 -ar "$myaudiorate" -r "$myframerate" -s "$myvideosize"\
 -pre:0 libx264-lossless_ultrafast -c:v libx264 -strict experimental "$outfile"

```

EDIT : modification nom de fichier par défaut

---

<div class="post-metadata">

**Author:** ![rsuinux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/rsuinux/32/4554_2.png) [@rsuinux](https://www.debian-fr.org/u/rsuinux)\
**Post date:** [Février 21, 2016, 7:42 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/340 "2016-02-21T19:42:59Z")

</div>

[quote=“agentsteel”]Capture audio/vidéo depuis une webcam

optimisé pour produire une vidéo au format mkv, avec le flux vidéo sans perte (preset “lossless”), le but du jeu étant d’obtenir une vidéo de qualité acceptable sans trop de perte de trames (dépend surtout de votre machine), que vous pourrez réencoder avant upload sur un site (avec ffmpeg2theora par exemple).

Utilisation :  
[mono]./capturecam.sh[/mono]  
ou  
[mono]./capturecam.sh fichier.mkv[/mono]

…/…

modification nom de fichier par défaut[/quote]  
bonjour, avez vous pensé à mettre une option pour le son? peut être pour certain cas, le son pourrait etre optionnel ?  
J’ai récupéré une webcam, je voudrais la mettre en continue sur ma porte d’entrée. Sans le son 🙂

Rémi.

---

<div class="post-metadata">

**Author:** ![agentsteel](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/97f17d/32.png) [@agentsteel](https://www.debian-fr.org/u/agentsteel)\
**Post date:** [Février 21, 2016, 7:43 UTC](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820/341 "2016-02-21T19:43:06Z")

</div>

Pour ne pas enregistrer le son, il suffirait d’enlever la ligne

[mono]-f alsa -i hw:1[/mono]  
ainsi que l’option [mono]-ar “$myaudiorate”[/mono]

Par contre pour ce que tu veux faire, l’encodage ne sera peut-être pas optimal (le format lossless prend bcp de place disque).

Et pour de la vidéosurveillance il existe des softs plus adaptés : motion et zoneminder pour les plus connus

[Page précédente](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820.md?page=16)

[Page suivante](https://www.debian-fr.org/t/pour-les-scripts-cest-ici/3820.md?page=18)
