Change screen position
This commit is contained in:
parent
63fff3f4c3
commit
587c2731b1
|
@ -0,0 +1,358 @@
|
|||
<?php
|
||||
/**
|
||||
* SoustitreDownlaoder
|
||||
*
|
||||
* Ce script PHP permet de télécharger des sous-titres automatiques à partir du site addic7ed.com
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
* @copyright Copyright 2013, Spikto, Thomas Buée
|
||||
*/
|
||||
|
||||
//ini_set("display_errors", "1");
|
||||
set_time_limit(0);
|
||||
|
||||
$app = new getFileSubtitle($argv);
|
||||
|
||||
/**
|
||||
* Gestion des sous-titres à télécharger
|
||||
*/
|
||||
class getFileSubtitle {
|
||||
private $extFile = array("mp4","mkv","m4v","avi","mov","wmv","mpg");
|
||||
private $fileToCheck=array();
|
||||
private $pathSearch;
|
||||
private $pathMove;
|
||||
private $createFolder=false;
|
||||
private $forceDownload=false;
|
||||
|
||||
public function __construct($argv) {
|
||||
$this->pathSearch = (isset($argv[1]) ? $argv[1] : "");
|
||||
$this->pathMove = (isset($argv[2]) ? $argv[2] : "");
|
||||
if (isset($argv[3])) {
|
||||
for($i=0;$i<strlen($argv[3]);$i++) {
|
||||
if ($argv[3][$i]=="f") $this->createFolder=true;
|
||||
if ($argv[3][$i]=="d") $this->forceDownload=true;
|
||||
}
|
||||
}
|
||||
$this->logicPath();
|
||||
$this->findFile();
|
||||
$this->findSubtitle();
|
||||
}
|
||||
|
||||
public function logicPath() {
|
||||
if ($this->pathSearch!="" && substr($this->pathSearch, -1)!="/") $this->pathSearch .= "/";
|
||||
if ($this->pathMove!="" && substr($this->pathMove, -1)!="/") $this->pathMove .= "/";
|
||||
}
|
||||
|
||||
/**
|
||||
* Recherche des sous-titres à télécharger
|
||||
*/
|
||||
public function findFile() {
|
||||
$path = $this->pathSearch;
|
||||
if ($path!="") {
|
||||
$list = glob_perso($path);
|
||||
foreach($list as $l) {
|
||||
$info = pathinfo($l);
|
||||
if (is_file($l) && in_array($info["extension"], $this->extFile) && !preg_match("#VOSTF|VOSTFR#i", $info["filename"])) {
|
||||
if (!file_exists($path.$info["filename"].".srt")) {
|
||||
$this->fileToCheck[] = new fileData($info);
|
||||
}
|
||||
else if ($this->pathMove!="") {
|
||||
$data = new fileData($info);
|
||||
$this->relocateEpisode($data);
|
||||
}
|
||||
}
|
||||
else if (is_dir($l)) {
|
||||
$data = new fileData($info);
|
||||
if ($data->isValid()) {
|
||||
$sublist = glob_perso($l."/");
|
||||
foreach($sublist as $sl) {
|
||||
$info = pathinfo($sl);
|
||||
if (is_file($sl) && in_array($info["extension"], $this->extFile) && !preg_match("#VOSTF|VOSTFR#i", $info["filename"])) {
|
||||
rename($sl, $path.$info["basename"]);
|
||||
$info = pathinfo($path.$info["basename"]);
|
||||
$this->fileToCheck[] = new fileData($info);
|
||||
}
|
||||
elseif (is_file($sl)) {
|
||||
unlink($sl);
|
||||
}
|
||||
}
|
||||
rmdir($l."/");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Déplace le fichier dans le dossier approprié : Série [ > Saison] > Episode
|
||||
*/
|
||||
public function relocateEpisode($data) {
|
||||
$comp = "";
|
||||
if (file_exists($this->pathMove.$data->serie)) {
|
||||
$comp .= $data->serie;
|
||||
}
|
||||
elseif ($this->createFolder && !file_exists($this->pathMove.$data->serie)) {
|
||||
mkdir($this->pathMove.$data->serie);
|
||||
$comp .= $data->serie;
|
||||
}
|
||||
if ($comp!="") {
|
||||
if (file_exists($this->pathMove.$data->serie."/Saison ".intval($data->saison))) $comp .= "/Saison ".intval($data->saison);
|
||||
elseif (file_exists($this->pathMove.$data->serie."/Season ".intval($data->saison))) $comp .= "/Season ".intval($data->saison);
|
||||
}
|
||||
rename($this->pathSearch.$data->info["basename"], $this->pathMove.$comp."/".$data->info["basename"]);
|
||||
rename($this->pathSearch.$data->info["filename"].".srt", $this->pathMove.$comp."/".$data->info["filename"].".srt");
|
||||
}
|
||||
|
||||
/**
|
||||
* Recherche du sous-titre
|
||||
*/
|
||||
public function findSubtitle() {
|
||||
if (count($this->fileToCheck)>0) {
|
||||
foreach($this->fileToCheck as $f) {
|
||||
$addicted = new addictedSubtitle($f, $this->forceDownload);
|
||||
if ($addicted->findEpisode()) {
|
||||
if ($this->pathMove!="") {
|
||||
$this->relocateEpisode($f);
|
||||
}
|
||||
echo "Un sous-titre a été trouvé\n";
|
||||
}
|
||||
else {
|
||||
echo "Aucun sous-titre trouvé\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
echo "Aucun sous-titre à rechercher.\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Recupère les infos importantes à partir du nom du fichier
|
||||
*/
|
||||
class fileData {
|
||||
public $saison;
|
||||
public $episode;
|
||||
public $serie;
|
||||
public $version;
|
||||
public $info;
|
||||
|
||||
public function __construct($info) {
|
||||
$this->info = $info;
|
||||
$this->readName();
|
||||
}
|
||||
|
||||
|
||||
public function readName() {
|
||||
$file = $this->info["filename"];
|
||||
//preg_match("#([^0-9]+)([0-9]{2})E([0-9]{2})#", $file, $result2);
|
||||
|
||||
if (preg_match("#S([0-9]{2})E([0-9]{2})#msui", $file, $result)) {
|
||||
$this->saison = $result[1];
|
||||
$this->episode = $result[2];
|
||||
if (preg_match("#(.*)S".$this->saison."E".$this->episode."#msui", $file, $result2)) {
|
||||
$this->serie = ucwords(trim(str_replace(".", " ", $result2[1])));
|
||||
}
|
||||
}
|
||||
else if (preg_match("#([0-9]{1,2})x([0-9]{2})#", $file, $result)) {
|
||||
$this->saison = $result[1];
|
||||
$this->episode = $result[2];
|
||||
if (preg_match("#(.*)".$this->saison."x".$this->episode."#", $file, $result2)) {
|
||||
$this->serie = ucwords(trim(str_replace(".", " ", $result2[1])));
|
||||
}
|
||||
}
|
||||
else if (preg_match_all("#[. ]([0-9])([0-9]{2})[. ]#", $file, $result, PREG_SET_ORDER)) {
|
||||
$result = end($result);
|
||||
$this->saison = ($result[1]<10 ? "0".$result[1] : $result[1]);
|
||||
$this->episode = $result[2];
|
||||
if (preg_match("#(.*)".$result[1].$this->episode."#", $file, $result2)) {
|
||||
$this->serie = ucwords(trim(str_replace(".", " ", $result2[1])));
|
||||
}
|
||||
}
|
||||
preg_match("#(LOL|AFG|FQM|ASAP|EVOLVE|IMMERSE|2HD|KILLERS)#msui", $file, $result3);
|
||||
$this->version = strtoupper(isset($result3[1]) ? $result3[1] : "");
|
||||
}
|
||||
|
||||
public function getSimpleName() {
|
||||
return $this->serie." ".$this->saison."x".$this->episode;
|
||||
}
|
||||
|
||||
public function isValid() {
|
||||
return ($this->serie!="" && $this->saison!="" && $this->episode);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Base de source pour le téléchargement des sous-titres
|
||||
*/
|
||||
class sourceSubtitle {
|
||||
public $base;
|
||||
public $referer;
|
||||
public $search;
|
||||
public $forceExistant;
|
||||
|
||||
public function __construct($search, $force = false) {
|
||||
$this->search = $search;
|
||||
$this->forceExistant = $force;
|
||||
}
|
||||
|
||||
protected function getDataFromLink($link) {
|
||||
$cpt = 0;
|
||||
$return = false;
|
||||
while($return==false && $cpt<3) {
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_URL, $this->base.$link);
|
||||
//curl_setopt($curl, CURLOPT_HEADER, true);
|
||||
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, 120);
|
||||
if ($this->referer!="") curl_setopt($curl, CURLOPT_REFERER, $this->referer);
|
||||
|
||||
$return = curl_exec($curl);
|
||||
curl_close($curl);
|
||||
$cpt++;
|
||||
}
|
||||
$this->referer = $this->base.$link;
|
||||
return $return;
|
||||
}
|
||||
|
||||
public function findEpisode($nom) {
|
||||
|
||||
}
|
||||
public function findSubtitle($link) {
|
||||
|
||||
}
|
||||
public function saveSubtitle($lien) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Source Addic7ed.com
|
||||
*/
|
||||
class addictedSubtitle extends sourceSubtitle {
|
||||
public $base = "http://www.addic7ed.com/";
|
||||
|
||||
public function findEpisode() {
|
||||
$episodes = $this->getDataFromLink("search.php?search=".rawurlencode($this->search->getSimpleName())."&Submit=Search");
|
||||
|
||||
preg_match("#<a href=\"([^\"]*)\"[^>]*>".$this->search->serie."[^<]*".$this->search->saison."x".$this->search->episode."[^<]*</a>#", $episodes, $result);
|
||||
|
||||
if (count($result)>0) {
|
||||
return $this->findSubtitle($result[1]);
|
||||
}
|
||||
else {
|
||||
preg_match("#<a href=\"([^\"]*)\".*>.*".$this->search->saison."x".$this->search->episode.".*</a>#", $episodes, $result);
|
||||
if (count($result)>0) {
|
||||
return $this->findSubtitle($result[1]);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function findSubtitle($link) {
|
||||
$soustitres = $this->getDataFromLink($link);
|
||||
$blocs = explode("<div id=\"container95m\">", $soustitres);
|
||||
$linkSubtitle="";
|
||||
$completedLink = array();
|
||||
foreach ($blocs as $b) {
|
||||
$valid = true;
|
||||
preg_match_all("#\/updated\/8\/([0-9/]*)#", $b, $resultLink);
|
||||
foreach($resultLink[1] as $l) {
|
||||
$resultVersion = array();
|
||||
$dec = explode("/", $l);
|
||||
preg_match_all("#Version ".($this->search->version!="" ? "(".$this->search->version.")" : "([^<]*)").".*starttranslation.php\?id=".$dec[0]."&fversion=".$dec[1]."\".*saveFavorite\(".$dec[0].",8,[0-9]*\).*([0-9]{0,2}\.?[0-9]{0,2}%? ?Completed).*\/updated\/8\/(".$dec[0]."\/".$dec[1].")\"#msui", $b, $resultVersion, PREG_SET_ORDER);
|
||||
if (count($resultVersion) == 0) {
|
||||
preg_match_all("#Version [^<]*.*starttranslation.php\?id=".$dec[0]."&fversion=".$dec[1]."\".*Works with ".($this->search->version!="" ? "[^<]*(".$this->search->version.")[^<]*" : "[^<]*").".*saveFavorite\(".$dec[0].",8,[0-9]*\).*([0-9]{0,2}\.?[0-9]{0,2}%? ?Completed).*\/updated\/8\/(".$dec[0]."\/".$dec[1].")\"#msui", $b, $resultVersion, PREG_SET_ORDER);
|
||||
}
|
||||
if (count($resultVersion) == 0) {
|
||||
preg_match_all("#Version ([^<]*).*starttranslation.php\?id=".$dec[0]."&fversion=".$dec[1]."\".*saveFavorite\(".$dec[0].",8,[0-9]*\).*([0-9]{0,2}\.?[0-9]{0,2}%? ?Completed).*\/updated\/8\/(".$dec[0]."\/".$dec[1].")\"#msui", $b, $resultVersion, PREG_SET_ORDER);
|
||||
}
|
||||
if (count($resultVersion) > 0) {
|
||||
if (!preg_match("#saveFavorite\(".$dec[0].",8,[0-9]*\).*[0-9]*\.[0-9]*% Completed.*\/updated\/8\/(".$dec[0]."\/".$dec[1].")#msui", $b)) {
|
||||
$completedLink[] = "updated/8/".$l;
|
||||
}
|
||||
else {
|
||||
$valid = false;
|
||||
}
|
||||
if ($this->search->version!="") {
|
||||
if (strpos($resultVersion[0][1], $this->search->version)!==false) {
|
||||
$completedLink[] = "updated/8/".$l;
|
||||
}
|
||||
else {
|
||||
$valid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$valid = false;
|
||||
}
|
||||
|
||||
if ($valid) {
|
||||
$linkSubtitle = "updated/8/".$l;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($valid && $linkSubtitle!="") break;
|
||||
}
|
||||
if ($this->forceExistant && $linkSubtitle=="" && !empty($completedLink)) {
|
||||
$linkSubtitle = $completedLink[0];
|
||||
}
|
||||
if ($linkSubtitle!="") {
|
||||
return $this->saveSubtitle($linkSubtitle);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public function saveSubtitle($link) {
|
||||
$soustitre = $this->getDataFromLink($link);
|
||||
if ($soustitre!="") {
|
||||
$fp = fopen($this->search->info["dirname"]."/".$this->search->info["filename"].".srt", "a+");
|
||||
fwrite($fp, $soustitre);
|
||||
fclose($fp);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
function glob_perso($path, $folder=array()) {
|
||||
$globalPath;
|
||||
$list = array();
|
||||
if (!empty($folder)) {
|
||||
if (!is_array($folder)) $folder = array($folder);
|
||||
foreach ($folder as $value) {
|
||||
if (file_exists($path.$value)) {
|
||||
$path = $path.$value;
|
||||
}
|
||||
else {
|
||||
$handle = opendir($path);
|
||||
if ($handle) {
|
||||
while (false !== ($entry = readdir($handle))) {
|
||||
if (strtolower($entry)==strtolower($value)) {
|
||||
$path = $path.$entry."/";
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$globalPath = $path;
|
||||
if (file_exists($globalPath)) {
|
||||
$handle = opendir($globalPath);
|
||||
if ($handle) {
|
||||
while (false !== ($entry = readdir($handle))) {
|
||||
if ($entry != "." && $entry != "..") {
|
||||
$list[] = $globalPath.$entry;
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
}
|
||||
return $list;
|
||||
}
|
|
@ -0,0 +1,389 @@
|
|||
#!/bin/sh
|
||||
################################################################################################
|
||||
##
|
||||
## Nom: backup_config.sh
|
||||
##
|
||||
## Version: 0.4
|
||||
##
|
||||
## Licence: Creative Commons
|
||||
##
|
||||
## Comportement: Sauvegarde l'ensemble des éléments de configuration de mon système Debian
|
||||
## Le script peut-être exécuté en root ou en utilisateur principal. Le premier permettra
|
||||
## de sauvegarder certains fichiers dont lui seul a l'accès. Et le second permettra de
|
||||
## sauvegarder uniquement les fichiers de son répertoire utilisateur.
|
||||
## Deux modes d'exécution sont également disponible:
|
||||
## - backup: pour sauvegarder les fichiers en fonction de l'utilisateur
|
||||
## - restore: pour restaurer les fichiers en fonction de l'utilisateur
|
||||
##
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
##
|
||||
## Date de création: 28-12-2011
|
||||
##
|
||||
## Auteur: Gardouille
|
||||
##
|
||||
##
|
||||
## Dernière modifications:
|
||||
## 28-12-2011 - 0.1:
|
||||
## - Création
|
||||
# **********************************************************************************************
|
||||
## 2012/02/28 - 0.5.1:
|
||||
## - Ajout de la configuration de tmux
|
||||
## - Ajout de la sauvegarde des icônes
|
||||
## 2012/01/12 - 0.4:
|
||||
## - Ajout de la sauvegarde de la configuration de tint2
|
||||
## - Ajout de la sauvegarde de la configuration de gsimplecal (calendrier graphique tout simple)
|
||||
## - Ajout de la sauvegarde de la configuration de roxterm
|
||||
## - Pour le moment, roxterm est uniquement utilisé avec dmenu faute de pouvoir utiliser la touche "tab" dans les raccourcis clavier.
|
||||
## - Ajout de la sauvegarde d'Openbox
|
||||
## 2012/01/11 - 0.3:
|
||||
## - Ajout de la sauvegarde du script pour lancer dmenu
|
||||
## 2012/01/05 - 0.2:
|
||||
## - Ajout de la sauvegarde du fichier principal de devtodo
|
||||
## - Ajout de la sauvegarde du répertoire personnel pour le jeu vvvvvv
|
||||
##
|
||||
# **********************************************************************************************
|
||||
## À Modifier:
|
||||
## - Ajouter le mode restore
|
||||
## - La config dmenu via le Alt+F3
|
||||
## - Ajouter la config de fbpanel
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Variables globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
# Répertoire de l'utilisateur principal
|
||||
USER_DIR="/home/$USER"
|
||||
|
||||
# Emplacement de stockage des fichiers des fichiers systèmes à sauvegarder
|
||||
#BKP_DIR="/media/data/test_backup"
|
||||
BKP_DIR="/media/backup/config_file-`date +%y-%m-%d`"
|
||||
|
||||
# Emplacement de stockage des fichiers de l'utilisateur
|
||||
#BKP_DIR_USER="/media/data/test_backup/home"
|
||||
BKP_DIR_USER="/media/backup/config_file-`date +%y-%m-%d`/home"
|
||||
|
||||
## Choix du mode d'exécution du script:
|
||||
## Niveau 0 (mode_debug=0)
|
||||
# Exécution automatique avec normalement aucune interaction avec l'utilisateur.
|
||||
## Niveau 1 (mode_debug=1)
|
||||
# ...
|
||||
## Niveau 2 (mode_debug=2)
|
||||
# L'installation n'est pas en automatique (aptitude, ...)
|
||||
# La sortie des différentes commandes est envoyée sur la sortie standard
|
||||
mode_debug=2
|
||||
|
||||
case "$mode_debug" in
|
||||
0) ## Niveau minimum
|
||||
# La sortie standard sera redirigée dans un fichier de log
|
||||
sortie="> /dev/null 2> \"${fichier_erreur}\""
|
||||
;;
|
||||
1) ## Niveau moyen
|
||||
# La sortie standard sera quand même affichée
|
||||
sortie="2> \"${fichier_erreur}\""
|
||||
;;
|
||||
2) ## Niveau maximum
|
||||
# Le résultat des commandes reste sur la sortie standard
|
||||
sortie=""
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
## Fichier contenant les dernières erreurs
|
||||
fichier_erreur="/tmp/erreur_backup_config.sh.tmp"
|
||||
touch "${fichier_erreur}"
|
||||
|
||||
|
||||
|
||||
# Fin des variables globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fichiers globaux
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
|
||||
# Fin des fichiers globaux
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fonctions globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
## Fonction de sauvegarde
|
||||
# Prototype: backup $1 $2 $3 [$4]
|
||||
# $1: Description de la sauvegarde
|
||||
# $2: Répertoire/fichier à sauvegarder
|
||||
# $3: Emplacement où stocker le répertoire/fichier
|
||||
# $4: Filtre à appliquer si présent
|
||||
backup()
|
||||
{
|
||||
if [ ! -d $3 ]; then # Si l'emplacement de sauvegarde n'existe pas
|
||||
echod "Creation de $3"
|
||||
mkdir -p $3
|
||||
fi
|
||||
|
||||
echod "Sauvegarde de $1"
|
||||
|
||||
if [ $4 ]; then
|
||||
# Synchronisation avec le filtre
|
||||
#rsync -rl --delete --filter "- $4" $2 $3
|
||||
rsync -rlpgoD --delete --filter "- $4" $2 $3
|
||||
else
|
||||
# Synchronisation classique
|
||||
#rsync -rl --delete $2 $3
|
||||
rsync -rlpgoD --delete $2 $3
|
||||
fi
|
||||
# r: Récurif dans les répertoires
|
||||
# l: Copier les liens comme des liens
|
||||
# Pour appliquer l'option -a (rlptgoD), il faudrait copier les données sur le même type de partition et non pas sur du ntfs/fat
|
||||
}
|
||||
|
||||
## Fonction de restauration
|
||||
# Prototype: restore $1 $2 $3
|
||||
# $1: Répertoire/fichier à restaurer
|
||||
# $2: Emplacement où restaurer le répertoire/fichier
|
||||
# $3: Droits sur le répertoire/fichier
|
||||
#restore()
|
||||
#{
|
||||
|
||||
#}
|
||||
|
||||
# Possibilité d'utiliser cp
|
||||
#cp --preserve=mode,ownership,timestamps ...
|
||||
|
||||
|
||||
|
||||
## Fonction d'affichage en fonction du mode debug choisi
|
||||
echod() { [ "$mode_debug" -ge 2 ] && echo "(DEBUG) $*" ; }
|
||||
echok() { [ "$mode_debug" -ge 2 ] && echo "(ok) $*" ; }
|
||||
echoi() { [ "$mode_debug" -ge 1 ] && echo "(ii) $*" ; }
|
||||
echow() { [ "$mode_debug" -ge 1 ] && echo "(!!) $*" ; }
|
||||
echnk() { [ "$mode_debug" -ge 0 ] && echo "(EE) $*" ; }
|
||||
|
||||
# Fin des fonctions globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Programme principale
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
|
||||
# Vérification de l'existence des emplacements de sauvegarde
|
||||
if [ ! -d $BKP_DIR ] || [ ! -d $BKP_DIR_USER ]; then
|
||||
echo << EOF "
|
||||
L'un des emplacements de sauvegarde spécifié n'existe pas:
|
||||
- $BKP_DIR
|
||||
ou
|
||||
- $BKP_DIR_USER
|
||||
|
||||
Vérifier si les variable BKP_DIR et BKP_DIR_USER contiennent les bonnes valeurs.
|
||||
Si c'est le cas, merci de créer manuellement les répertoires."
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
case "$1" in
|
||||
backup)
|
||||
if [ "${USER}" = "root" ]; then # Si le script est exécuté en root
|
||||
echo "Exécution de la sauvegarde en tant que root"
|
||||
|
||||
## Répertoire /etc
|
||||
# APT
|
||||
backup "APT" /etc/apt/sources.list $BKP_DIR/etc/apt/
|
||||
|
||||
# Fichier fstab
|
||||
backup "fstab" /etc/fstab $BKP_DIR/etc/
|
||||
|
||||
# Fichier hosts
|
||||
backup "hosts" /etc/hosts $BKP_DIR/etc/
|
||||
|
||||
# Fichier interfaces (réseau)
|
||||
backup "interfaces" /etc/network/interfaces $BKP_DIR/etc/network/
|
||||
|
||||
# Samba
|
||||
backup "Samba" /etc/samba $BKP_DIR/etc/
|
||||
|
||||
# ZSH
|
||||
backup "ZSH" /etc/zsh $BKP_DIR/etc/
|
||||
backup "dir_colors" /etc/dir_colors $BKP_DIR/etc/
|
||||
|
||||
|
||||
# Répertoire /usr
|
||||
# VIM (dictionnaire)
|
||||
# backup /usr/share/vim/vim73/spell/
|
||||
|
||||
# Hammerfight (jeux)
|
||||
backup "Hammerfight" /usr/local/games/hammerfight/Saves $BKP_DIR/usr/local/games/hammerfight/
|
||||
|
||||
|
||||
else # Si c'est un utilisateur "normal"
|
||||
echo "Exécution de la sauvegarde en tant que $USER"
|
||||
|
||||
## Applications
|
||||
# EOG (Eye Of Gnome)
|
||||
|
||||
## Devtodo
|
||||
# 644/ .todo
|
||||
backup "Devtodo" "$USER_DIR"/.todo "$BKP_DIR_USER"
|
||||
|
||||
## dmenu
|
||||
# 644
|
||||
backup "dmenu" "$USER_DIR"/.dmenu "$BKP_DIR_USER"
|
||||
|
||||
# Filezilla
|
||||
backup "Filezilla" "$USER_DIR"/.filezilla "$BKP_DIR_USER"
|
||||
|
||||
# Freeplane
|
||||
backup "Freeplane" "$USER_DIR"/.freeplane "$BKP_DIR_USER"
|
||||
|
||||
# Gedit
|
||||
|
||||
# Gnome
|
||||
|
||||
# Gsimplecal
|
||||
backup "Gsimplecal" "$USER_DIR"/.config/gsimplecal "$BKP_DIR_USER"/.config/
|
||||
|
||||
# Icedove
|
||||
#backup "Icedove" "$USER_DIR"/.icedove "$BKP_DIR_USER" ImapMail
|
||||
backup "Icedove" "$USER_DIR"/.icedove "$BKP_DIR_USER"
|
||||
|
||||
# Iceweasel
|
||||
backup "Iceweasel" "$USER_DIR"/.mozilla "$BKP_DIR_USER"
|
||||
# Extension: Pentadactyl
|
||||
backup "Pentadactyl" "$USER_DIR"/.pentadactyl "$BKP_DIR_USER"
|
||||
backup "Pentadactyl" "$USER_DIR"/.pentadactylrc "$BKP_DIR_USER"
|
||||
|
||||
# icônes
|
||||
backup "Icônes" "$USER_DIR"/.icons "$BKP_DIR_USER"
|
||||
|
||||
# Irssi
|
||||
backup "Irssi" "$USER_DIR"/.irssi "$BKP_DIR_USER"
|
||||
|
||||
# Jitsi
|
||||
backup "Jitsi" "$USER_DIR"/.jitsi "$BKP_DIR_USER"
|
||||
|
||||
# Lessfilter
|
||||
backup "Lessfilter" "$USER_DIR"/.lessfilter "$BKP_DIR_USER"
|
||||
|
||||
# Libreoffice (templates, dictionnaires, ...)
|
||||
backup "Libreoffice" "$USER_DIR"/.libreoffice "$BKP_DIR_USER"
|
||||
|
||||
# MOC (Music On Console)
|
||||
backup "MOC" "$USER_DIR"/.moc "$BKP_DIR_USER"
|
||||
|
||||
# Modèles de documents
|
||||
backup "Modeles" "$USER_DIR"/Modeles "$BKP_DIR_USER"
|
||||
backup "user-dirs.dirs" "$USER_DIR"/.config/user-dirs.dirs "$BKP_DIR_USER"
|
||||
|
||||
# Nautilus (script)
|
||||
backup "nautilus-scripts" "$USER_DIR"/.gnome2/nautilus-* "$BKP_DIR_USER"/.gnome2/
|
||||
|
||||
# Openbox
|
||||
backup "openbox" "$USER_DIR"/.config/openbox "$BKP_DIR_USER"/.config/
|
||||
|
||||
# Pidgin (configuration et historique)
|
||||
backup "Pidgin" "$USER_DIR"/.purple "$BKP_DIR_USER"
|
||||
|
||||
# Programme par défaut
|
||||
backup "Programme par défaut" "$USER_DIR"/.local/share/applications/mimeapps.list "$BKP_DIR_USER"/.local/share/applications
|
||||
|
||||
# Pyload
|
||||
backup "Pyload" "$USER_DIR"/.pyload "$BKP_DIR_USER"
|
||||
|
||||
# Rhythmbox (configuration, bibliothèque, ...)
|
||||
backup "Rhythmbox" "$USER_DIR"/.local/share/rhythmbox "$BKP_DIR_USER"/.local/share/
|
||||
backup "Rhythmbox" "$USER_DIR"/.gconf/apps/rhythmbox "$BKP_DIR_USER"/.gconf/apps/
|
||||
|
||||
# Roxterm
|
||||
# 755: récursif sur les répertoires
|
||||
# 644: récursif sur les fichiers
|
||||
backup "Roxterm" "$USER_DIR"/.config/roxterm.sourceforge.net "$BKP_DIR_USER"/.config/
|
||||
|
||||
# Screen
|
||||
backup "Screen" "$USER_DIR"/.screen "$BKP_DIR_USER"
|
||||
|
||||
# Script
|
||||
backup "Script" "$USER_DIR"/bin "$BKP_DIR_USER"
|
||||
|
||||
# SSH
|
||||
backup "SSH" "$USER_DIR"/.ssh "$BKP_DIR_USER"
|
||||
|
||||
# Teamviewer
|
||||
backup "Teamviewer" "$USER_DIR"/.teamviewer "$BKP_DIR_USER"
|
||||
|
||||
# Terminator
|
||||
backup "Terminator" "$USER_DIR"/.config/terminator "$BKP_DIR_USER"/.config/
|
||||
|
||||
# Tmux
|
||||
backup "Tmux" "$USER_DIR"/.tmux.conf "$BKP_DIR_USER"/
|
||||
|
||||
# Transmission
|
||||
backup "Transmission" "$USER_DIR"/.config/transmission "$BKP_DIR_USER"/.config
|
||||
|
||||
# Tsclient
|
||||
backup "Tsclient" "$USER_DIR"/.tsclient "$BKP_DIR_USER"
|
||||
|
||||
# VIM
|
||||
backup "VIM" "$USER_DIR"/.vim "$BKP_DIR_USER"
|
||||
backup "VIM" "$USER_DIR"/.vimrc "$BKP_DIR_USER"
|
||||
|
||||
## Jeux
|
||||
# Cave story +
|
||||
|
||||
|
||||
# Hammerfight
|
||||
# Sauvegarde effectuée par root car nécessite des privilèges
|
||||
|
||||
# Minecraft
|
||||
backup "Minecraft" "$USER_DIR"/.minecraft "$BKP_DIR_USER"
|
||||
|
||||
# Minetest
|
||||
backup "Minetest" "$USER_DIR"/.minetest "$BKP_DIR_USER"
|
||||
|
||||
# Shank
|
||||
|
||||
|
||||
# Teeworlds
|
||||
backup "Teeworlds" "$USER_DIR"/.teeworlds "$BKP_DIR_USER"
|
||||
|
||||
# vvvvvv
|
||||
# 755: .vvvvvv
|
||||
# 644 pour tous les fichiers
|
||||
backup "vvvvvv" "$USER_DIR"/.vvvvvv "$BKP_DIR_USER"
|
||||
|
||||
fi
|
||||
;;
|
||||
|
||||
* )
|
||||
echo "Fonctionnement:"
|
||||
echo "./backup_config.sh backup|restore"
|
||||
|
||||
esac # Fin du case
|
||||
|
||||
exit 0
|
||||
# Fin de la boucle principale
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
|
@ -0,0 +1,280 @@
|
|||
#!/bin/sh
|
||||
################################################################################################
|
||||
##
|
||||
## Nom: backup_pirate_usb.sh
|
||||
##
|
||||
## Version: 0.2
|
||||
##
|
||||
## Licence: Creative Commons
|
||||
##
|
||||
## Comportement: Tentative de sauvegarde de données vers la clé usb en utilisant les
|
||||
## règles udev
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
##
|
||||
## Date de création: 03-01-2012
|
||||
##
|
||||
## Auteur: Gardouille
|
||||
##
|
||||
##
|
||||
## Dernière modifications:
|
||||
## 03-01-2012 - 0.1:
|
||||
## - Création du script
|
||||
## 04-01-2012 - 0.2:
|
||||
## - Ajout d'une boucle for qui parcourt les fichiers et les créée si nécessaire
|
||||
## - Utilisation de exec pour rediriger les sorties stdout et stderr
|
||||
## - cf http://abs.traduc.org/abs-5.0-fr/ch19.html#redir1
|
||||
## - Création de fonction pour rediriger et restaurer les sorties
|
||||
## -
|
||||
# **********************************************************************************************
|
||||
## //2011 - :
|
||||
## -
|
||||
## -
|
||||
# **********************************************************************************************
|
||||
## À Modifier:
|
||||
## - Redéfinir les paramètres choisi en fonction du mode debug pour utiliser les
|
||||
## fonctions de redirection des sorties
|
||||
## -
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Variables globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
|
||||
## Choix du mode d'exécution du script:
|
||||
## Niveau 0 (mode_debug=0)
|
||||
# Exécution automatique avec normalement aucune interaction avec l'utilisateur.
|
||||
## Niveau 1 (mode_debug=1)
|
||||
# Exécution semi-automatique avec peu d'interaction nécessaire
|
||||
## Niveau 2 (mode_debug=2)
|
||||
# La sortie des différentes commandes est envoyée sur la sortie standard
|
||||
mode_debug=2
|
||||
|
||||
case "$mode_debug" in
|
||||
0) ## Niveau minimum
|
||||
# La sortie standard sera redirigée dans un fichier de log
|
||||
redirect_stdout
|
||||
# La sortie d'erreur sera redirigée dans un fichier d'erreur
|
||||
redirect_stderr
|
||||
;;
|
||||
1) ## Niveau moyen
|
||||
# Seulement la sortie d'erreur sera redirigée
|
||||
redirect_stderr
|
||||
;;
|
||||
2) ## Niveau maximum
|
||||
# Le résultat des commandes reste sur la sortie standard
|
||||
echo "Mode debug"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
# Partition à monter
|
||||
PART="/dev/tipiak"
|
||||
|
||||
# Point de montage
|
||||
MOUNT_POINT="/mnt/bkp_tipiak"
|
||||
|
||||
## Répertoire à sauvegarder
|
||||
DIR="/media/data/config_debian/sid"
|
||||
|
||||
## Répertoire où s'effectue la sauvegarde (sur la clé usb)
|
||||
BKP_DIR="backup"
|
||||
|
||||
## Obtenir le volume id d'un périphérique:
|
||||
#hal-find-by-property --key block.device --string /dev/sdXX
|
||||
|
||||
## Obtenir le point de montage d'un périphérique à partir de son volume id:
|
||||
#MOUNTPOINT=$(hal-get-property --udi /org/freedesktop/Hal/devices/le_volume_uuid_detrminé_precedemment --key volume.mount_point)
|
||||
|
||||
# Fin des variables globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fichiers globaux
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
## Fichier de log
|
||||
fichier_log="/tmp/backup_pirate_usb.log"
|
||||
## Fichier de erreur
|
||||
fichier_erreur="/tmp/backup_pirate_usb.err"
|
||||
|
||||
# Parcourir les fichiers et les créer si nécessaire
|
||||
for fichier in ${fichier_log} ${fichier_erreur}; do
|
||||
if [ -f ${fichier} ]; then
|
||||
rm -f ${fichier}
|
||||
else
|
||||
touch ${fichier}
|
||||
fi
|
||||
done
|
||||
|
||||
# Fin des fichiers globaux
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fonctions globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
## Fonction d'affichage en fonction du mode debug choisi
|
||||
echod() { [ "$mode_debug" -ge 2 ] && echo "(DEBUG) $*" ; }
|
||||
echok() { [ "$mode_debug" -ge 2 ] && echo "(ok) $*" ; }
|
||||
echoi() { [ "$mode_debug" -ge 1 ] && echo "(ii) $*" ; }
|
||||
echow() { [ "$mode_debug" -ge 1 ] && echo "(!!) $*" ; }
|
||||
echnk() { [ "$mode_debug" -ge 0 ] && echo "(EE) $*" ; }
|
||||
|
||||
## Redirection de la sortie standard (stdout) vers le fichier de log
|
||||
redirect_stdout()
|
||||
{
|
||||
# Sauvegarder la valeur de stdout dans le descripteur de fichier 6
|
||||
exec 6>&1
|
||||
|
||||
# stdout remplacé par le fichier de log
|
||||
exec > ${fichier_log}
|
||||
}
|
||||
|
||||
## Restauration de stdout
|
||||
restore_stdout()
|
||||
{
|
||||
# Test si le descripteur de fichier 6 existe
|
||||
if [ "$(lsof -a -p $$ -d6 | grep 6)" ]; then
|
||||
echo "Restauration de stdout et fermeture du descripteur de fichier 6"
|
||||
# Restaurer stdout et fermer le descripteur de fichier #6
|
||||
exec 1>&6 6>&-
|
||||
else
|
||||
echo "Le descripteur de fichier 6 n'existe pas. stdout est normalement en place"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
## Redirection de la sortie d'erreur standard (stderr) vers le fichier d'erreur
|
||||
redirect_stderr()
|
||||
{
|
||||
# Sauvegarder la valeur de stderr dans le descripteur de fichier 7
|
||||
exec 7>&2
|
||||
|
||||
# stderr remplacé par le fichier d'erreur
|
||||
exec 2> ${fichier_erreur}
|
||||
}
|
||||
|
||||
## Restauration de stderr
|
||||
restore_stderr()
|
||||
{
|
||||
# Test si le descripteur de fichier 7 existe
|
||||
if [ "$(lsof -a -p $$ -d7 | grep 7)" ]; then
|
||||
echo "Restauration de stderr et fermeture du descripteur de fichier 7"
|
||||
# Restaurer stderr et fermer le descripteur de fichier #7
|
||||
exec 2>&7 7>&-
|
||||
else
|
||||
echo "Le descripteur de fichier 7 n'existe pas. stderr est normalement en place"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
|
||||
## Fonction d'erreur
|
||||
# Affiche le message relative à la position de l'erreur # Et affiche les erreurs renvoyées
|
||||
# - Prototype : erreur "MESSAGE_ERREUR"
|
||||
erreur()
|
||||
{
|
||||
## Vérification du code retour de la dernière commande
|
||||
case "$?" in
|
||||
0 ) ## Si 0, tout s'est bien passé
|
||||
> "${fichier_erreur}" ## On vide le fichier d'erreur
|
||||
;; ## Pas d'erreur
|
||||
* ) ## Si différent de 0
|
||||
## On affiche le message relatif à l'erreur
|
||||
echnk "Erreur lors de: -> ${1} <-"
|
||||
## Et on arrête le script avec un code retour 1
|
||||
echnk "/!\\ Arrêt du script /!\\"
|
||||
exit 1;
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Fin des fonctions globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Programme principale
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
|
||||
# Vérification du nombre de paramètres, pas besoin de paramètres actuellement
|
||||
|
||||
echo "test no redirect 1 "
|
||||
|
||||
redirect_stdout
|
||||
redirect_stderr
|
||||
|
||||
echo "Petit sleep de 10 secondes =)"
|
||||
sleep 10s
|
||||
|
||||
echo "test redirect 2 "
|
||||
|
||||
# Création du point de montage si il n'existe pas
|
||||
if [ ! -d $MOUNT_POINT ]; then
|
||||
echo "Création du point de montage"
|
||||
mkdir -p $MOUNT_POINT
|
||||
fi
|
||||
|
||||
# Montage de la partition
|
||||
echo "Montage de la partition"
|
||||
mount $PART $MOUNT_POINT
|
||||
# On vérifie si le montage s'est bien effectué
|
||||
erreur "Montage de la partition"
|
||||
|
||||
|
||||
# Création du répertoire de sauvegarde sur le point de montage
|
||||
if [ ! -d $MOUNT_POINT/$BKP_DIR ]; then
|
||||
echo "Création du répertoire de sauvegarde sur le point de montage"
|
||||
mkdir -p $MOUNT_POINT/$BKP_DIR
|
||||
fi
|
||||
|
||||
# Commande de synchronisation
|
||||
echo "Début synchronisation"
|
||||
rsync -rl --delete --stats $DIR $MOUNT_POINT/$BKP_DIR
|
||||
#rsync -rl --delete --stats $DIR $MOUNT_POINT/$BKP_DIR > ${fichier_log} 2> ${fichier_erreur}
|
||||
|
||||
# Commande de synchronisation avec affichage graphique de la progression
|
||||
#rsync -rl --delete --stats $DIR $MOUNT_POINT/$BKP_DIR | zenity --text-info --title="Updating Podcasts" --width=600 --height=600
|
||||
echo "Fin synchronisation"
|
||||
|
||||
# On donne tous les droits sur les fichiers de logs
|
||||
echo "Attribution des droits sur les fichiers de log"
|
||||
chmod 777 ${fichier_log} ${fichier_erreur}
|
||||
|
||||
# Démontage de la partition
|
||||
echo "Démontage de la partition"
|
||||
umount $MOUNT_POINT
|
||||
|
||||
|
||||
echo "test final redirect 3 "
|
||||
|
||||
echo "Restauration des sorties"
|
||||
restore_stdout
|
||||
restore_stderr
|
||||
|
||||
exit 0
|
||||
# Fin de la boucle principale
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
#!/bin/bash
|
||||
|
||||
RETRIES=0
|
||||
MAXRETRIES=5
|
||||
RETRYSLEEP=4
|
||||
|
||||
onexit() {
|
||||
return
|
||||
}
|
||||
|
||||
checkpassword() {
|
||||
local PASS=${2//$/\\$}
|
||||
expect << EOF >/dev/null
|
||||
spawn su $1 -c "exit"
|
||||
expect "Password:"
|
||||
send "${PASS}\r"
|
||||
expect eof
|
||||
catch wait result
|
||||
exit [lindex \$result 3]
|
||||
EOF
|
||||
}
|
||||
|
||||
header() {
|
||||
clear
|
||||
echo ""
|
||||
echo ""
|
||||
echo ""
|
||||
echo ""
|
||||
if [ "${RETRIES}" -ne 0 ]; then
|
||||
echo "Locked by ${USER} (${RETRIES} failed login attempts)"
|
||||
else
|
||||
echo "Locked by ${USER}"
|
||||
fi
|
||||
}
|
||||
|
||||
authenticate() {
|
||||
header
|
||||
local PASSWORD=""
|
||||
local RETRY=0
|
||||
while true; do
|
||||
read -s -p "Password: " PASSWORD
|
||||
echo
|
||||
checkpassword ${USER} "${PASSWORD}"
|
||||
if [ "$?" -eq 0 ]; then
|
||||
echo "Welcome back!"
|
||||
echo ""
|
||||
exit 0
|
||||
else
|
||||
RETRIES=$((RETRIES+1))
|
||||
RETRY=$((RETRY+1))
|
||||
echo "authentication failed!"
|
||||
echo ""
|
||||
if [ "${RETRY}" -ge "${MAXRETRIES}" ]; then
|
||||
RETRY=0
|
||||
echo "sleeping for ${RETRYSLEEP}"
|
||||
sleep ${RETRYSLEEP}
|
||||
header
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
trap onexit 1 2 3 15 18 20 ERR
|
||||
authenticate
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/sh
|
||||
|
||||
BKP_DIR="${HOME}/bkp_cluster_files"
|
||||
SSH_USER="root"
|
||||
|
||||
NODES_LIST='r720xd.ipr.univ-rennes1.fr r730xd1.ipr.univ-rennes1.fr r730xd2.ipr.univ-rennes1.fr nec06'
|
||||
FILES_LIST="/etc/network/interfaces /etc/udev/rules.d/70-persistent-net.rules"
|
||||
|
||||
|
||||
|
||||
mkdir -p "${BKP_DIR}"
|
||||
|
||||
|
||||
for node in r720xd.ipr.univ-rennes1.fr r730xd1.ipr.univ-rennes1.fr r730xd2.ipr.univ-rennes1.fr nec06; do
|
||||
mkdir -p "${BKP_DIR}"/"${node}"
|
||||
|
||||
for file in "${FILES_LIST}"; do
|
||||
scp "${SSH_USER}"@"${node}":"${file}" "${BKP_DIR}"/"${node}"/
|
||||
done
|
||||
|
||||
done
|
|
@ -0,0 +1,113 @@
|
|||
###Liste de quelques commandes bien utiles à se rappeler:
|
||||
|
||||
##Récupérer une clé à partir d'un message d'erreur du type:
|
||||
W: GPG error: http://ppa.launchpad.net intrepid Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 4874D3686E80C6B7
|
||||
##Exécuter la commande:
|
||||
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 4874D3686E80C6B7
|
||||
|
||||
###OU:
|
||||
sudo su -
|
||||
gpg --keyserver keyserver.ubuntu.com --recv 4874D3686E80C6B7
|
||||
gpg --export --armor 4874D3686E80C6B7 | apt-key add
|
||||
|
||||
|
||||
##Renommer des fichiers en leurs enlevant une extension:
|
||||
find . -name *.c | sed -e 's/\(.*\)\.C/mv \1.c \1/' | sh
|
||||
#Exemple qui recherche tous les fichiers avec l'extension ".c", pour ensuite les renommés sans ".c". Le pipe sh "| sh", permet d'exécuter la commande, si on l'enlève, on verra le résultat sans l'exécuter.
|
||||
|
||||
## Redimensionner un groupe d'image
|
||||
find . -iname "*.jpg" -exec convert -resize 1024x "{}" "{}" \;
|
||||
|
||||
## Supprimer un bloc de ligne commençant par DEBUT et se terminant par
|
||||
#+ par une ligne vide
|
||||
sed '/DEBUT/,/^$/d' test.txt
|
||||
|
||||
# Trouver les derniers fichiers modifiés sur le système dans les 2 dernières minutes
|
||||
find / -mmin 2
|
||||
|
||||
## Rajouter un mot à la fin de plusieurs fichiers
|
||||
|
||||
|
||||
|
||||
##Voir l'arborescence des processus en cours:
|
||||
ps faux | less
|
||||
|
||||
|
||||
|
||||
##Liste des connections actives sur la machine:
|
||||
netstat -taupeln | less
|
||||
#PID, nom, port, ip, ...
|
||||
|
||||
|
||||
|
||||
##Voir la config de java et permet de sélectionner la jvm que l'on veut utiliser
|
||||
sudo update-alternatives --config java
|
||||
|
||||
|
||||
|
||||
##Modifier la couleur de l'horloge de gnome:
|
||||
'Lancer gconf-editor en sudo'
|
||||
'Aller à la clé /apps/panel/applets/clock_screen0/prefs/'
|
||||
'Attribuez la valeur "custom" à la clé "format"'
|
||||
'Appliquer le code suivant à la clé "custom format"'
|
||||
"<span color="#025EBA">%a %d %b</span> <span color="#cd984a"><b>%H:%M</b></span>"
|
||||
|
||||
|
||||
|
||||
##Lancer des images ou fichiers pdf à partir du terminal, utiliser Eye of Gnome:
|
||||
eog /var/log/bootchart/...
|
||||
|
||||
|
||||
|
||||
##Liste des paquets:
|
||||
dpkg --get-selections > mes_paquets.txt
|
||||
##ou aptitude search '~i!~M'
|
||||
|
||||
dpkg --set-selections < mes_paquets.txt
|
||||
|
||||
###Formatter complètement un disque:
|
||||
##ATTENTION force l'écriture de 0 sur tous le disque
|
||||
shred -fzv -n 100 /dev/hda
|
||||
|
||||
##Extraire la piste audio d'une vidéo: (.wav)
|
||||
mplayer video.avi -vc dummy -vo null -ao pcm :file=video.wav
|
||||
|
||||
##Convertir un .wav en mp3
|
||||
lame -h video.wav
|
||||
|
||||
|
||||
##Ne remplacer que la première occurence d'un mot sur une ligne dans un fichier
|
||||
sed -i 's/mot/MOT/' fichier.txt
|
||||
|
||||
##Remplacer toutes les occurences de toutes les lignes d'un mot dans un fichier
|
||||
sed -i 's/mot/MOT/g/' fichier.txt
|
||||
|
||||
##Décommenter une ligne
|
||||
sed -i 's/^# \(MA LIGNE COMMENTÉE.*\)/\1/' fichier.txt
|
||||
|
||||
##Générer une clé d'authentification pour ssh
|
||||
ssh-keygen -t rsa
|
||||
|
||||
##Envoyer la clé sur le serveur distant
|
||||
ssh-copy-id -i ~/.ssh/id_rsa.pub login@serveur
|
||||
|
||||
## Visualiser les systèmes d'exploitation des ordis présents sur le réseau
|
||||
nmap -O 192.168.0.1-255 | grep "Running:" | sort | uniq -c
|
||||
|
||||
# Convertir le format de sous titre:
|
||||
iconv -f ISO-8859-1 -t utf-8 sous_titre.srt -o sous_titre_utf8.srt
|
||||
|
||||
# Afficher les informations d'un fichier mkv:
|
||||
$ mkvmerge -i movie.mkv
|
||||
File ’movie.mkv’: container: Matroska
|
||||
Track ID 1: video (V_MS/VFW/FOURCC, DIV3)
|
||||
Track ID 2: audio (A_MPEG/L3)
|
||||
Track ID 3: audio (A_VORBIS)
|
||||
Track ID 4: subtitles (S_TEXT/UTF8)
|
||||
Track ID 5: subtitles (S_TEXT/UTF8)
|
||||
|
||||
# Extraire une piste d'un fichier mkv:
|
||||
$ mkvextract tracks movie.mkv 3:audio.ogg 4:subtitles.srt
|
||||
|
||||
# Copier un cd en image iso:
|
||||
dd if=/dev/cdrom of=fichier.iso
|
|
@ -0,0 +1,143 @@
|
|||
#!/bin/sh
|
||||
################################################################################################
|
||||
##
|
||||
## Nom: compile_latex
|
||||
##
|
||||
## Licence: Creative Commons
|
||||
##
|
||||
## Comportement: Compilation d'un fichier tex, suppression des fichiers temp et affichage du pdf
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
##
|
||||
## Date de création: 26/01/2011
|
||||
##
|
||||
## Auteur: Gardouille
|
||||
##
|
||||
##
|
||||
## Dernière modifications:
|
||||
## 27/01/2011: - Ajout de la possibilité de choisir entre supprimer/déplacer fichiers temp
|
||||
##
|
||||
# **********************************************************************************************
|
||||
## Modifications à apporter:
|
||||
## - Faire une gestion en fonction du nombre d'argument
|
||||
## - Découper le programme principal en différentes fonctions
|
||||
## -
|
||||
# **********************************************************************************************
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Variables globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
# Variable qui permet d'indiquer si il faut supprimer les fichiers temporaires
|
||||
# 0 = suppression
|
||||
rm_file="0"
|
||||
|
||||
# Variable qui permet d'indiquer si il faut déplacer les fichiers temporaires dans un sous dossier au nom du fichier à compiler
|
||||
# 0 = déplacer
|
||||
mv_file="1"
|
||||
|
||||
# Fin des variables globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fichiers globaux
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
log="`pwd`/compile.log"
|
||||
# Fin des fichierss globaux
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fonctions globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
# Divers echos ...
|
||||
echoi() { echo " (ii) $*" >> "${log}" ; }
|
||||
echok() { echo " (ok) $*" >> "${log}" ; }
|
||||
echow() { echo " (!!) $*" >> "${log}" ; }
|
||||
echnk() { echo " (EE) $*" >> "${log}" ; }
|
||||
|
||||
# Fin des fonctions globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Programme principale
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
|
||||
# Suppression du fichier de log si présent:
|
||||
[ -f "${log}" ] && rm -f "${log}"
|
||||
|
||||
case "$1" in # gestion du premier argument
|
||||
*.tex ) # Si le premier argument est bien un fichier .tex
|
||||
# On vérifie que le fichier existe bien:
|
||||
[ ! -f "$1" ] && echo "Erreur, le fichier passé en paramètre n'existe pas. Vérifier son orthographe et son emplacement, merci." && exit 1
|
||||
# On récupère le nom du fichier:
|
||||
file=`echo "$1" | sed -e "s/.tex//g"`
|
||||
|
||||
# On compile le document en pdf en rediregeant la sortie standart et les erreurs vers le fichier de log
|
||||
pdflatex "$1" > "${log}" 2>> "${log}"
|
||||
if [ $? -eq "0" ] # Si la compilation s'est bien déroulée
|
||||
then
|
||||
echo "Compilation terminée sans erreur"
|
||||
else
|
||||
echo "Il y a eu un problème lors de la compilation, veuillez prendre note du fichier de log: ${log}"
|
||||
echo "Il y a également les fichiers crées pendant la compilation qui pourront vous aider."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ ${rm_file} -eq "0" ] # Si il faut supprimer les fichiers temp
|
||||
then
|
||||
# Suppression des fichiers temporaires crées pour la compilation:
|
||||
rm -rf "${file}".aux "${file}".log >> "${log}" 2>> "${log}"
|
||||
elif [ ${mv_file} -eq "0" ] # Si il faut déplacer les fichiers temp
|
||||
then
|
||||
# Nouveau dossier au nom du fichier à compiler
|
||||
mkdir "${file}"
|
||||
# Déplacer les fichiers temporaires
|
||||
mv "${file}".aux "${file}".log "${file}"/
|
||||
fi
|
||||
|
||||
# Affichage du pdf:
|
||||
evince "${file}".pdf &
|
||||
|
||||
echo "good"
|
||||
exit 0
|
||||
;;
|
||||
h|help ) # Si une l'aide est demandée
|
||||
echo "Aide en cours de rédac =)"
|
||||
exit 0
|
||||
;;
|
||||
* ) # Sinon
|
||||
echo "Erreur. Utilisation:"
|
||||
echo "compile_latex fichier.tex"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Fin de la boucle principale
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
|
@ -0,0 +1,145 @@
|
|||
#!/bin/bash
|
||||
################################################################################################
|
||||
##
|
||||
## Nom: dl_plowshare.sh
|
||||
##
|
||||
## Version: 0.1
|
||||
##
|
||||
## Licence: Creative Commons
|
||||
##
|
||||
## Comportement: Analyse un répertoire pour savoir si il contient un fichier .down qui
|
||||
## contiendra des liens ddl (megaupload, DL_FILE). Créée un dossier du même nom que le fichier et
|
||||
## y télécharge les liens qu'il contient avec plowshare. Change ensuite l'extension du fichier
|
||||
## en .old pour qu'il ne soit pas retéléchargé.
|
||||
##
|
||||
## /!\ Changer la variable DL_DIR /!\
|
||||
##
|
||||
## Appliquer une tache cron du style:
|
||||
## */2 * * * * /chemin/script/dl_plowshare.sh
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
##
|
||||
## Date de création: 03-10-2011
|
||||
##
|
||||
## Auteur: Gardouille
|
||||
##
|
||||
##
|
||||
## Dernière modifications:
|
||||
## 03-10-2011 - 0.1:
|
||||
## -
|
||||
# **********************************************************************************************
|
||||
## //2011 - :
|
||||
## -
|
||||
## -
|
||||
# **********************************************************************************************
|
||||
##
|
||||
## À modifier:
|
||||
## - Possibilité de récupérer le répertoire à analyser en argument
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Variables globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
# Fichier temporaire pour savoir si le script est déjà en cours
|
||||
TMP_FILE="/tmp/dl_plowshare"
|
||||
# Répertoire à analyser pour trouver un fichier contenant une liste de lien
|
||||
DL_DIR="/media/data/download/ddl"
|
||||
# Nom du fichier (sans l'extension) contenant les liens à télécharger
|
||||
#BASE_DL_FILE=""
|
||||
# Extension de fichier à analyser
|
||||
EXTENSION="down"
|
||||
|
||||
# Fin des variables globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fichiers globaux
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
|
||||
# Fin des fichiers globaux
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fonctions globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
# Divers echos DL_FILE
|
||||
echoi() { echo " (ii) $*" >> "${log}" ; }
|
||||
echok() { echo " (ok) $*" >> "${log}" ; }
|
||||
echow() { echo " (!!) $*" >> "${log}" ; }
|
||||
echnk() { echo " (EE) $*" >> "${log}" ; }
|
||||
|
||||
# Fin des fonctions globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Programme principale
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
|
||||
## Vérifier que le script n'est pas déjà en cours
|
||||
if [ ! -f "${TMP_FILE}" ]; then
|
||||
|
||||
|
||||
## Créer un fichier temporaire pour indiquer que le script est en cours d'exécution
|
||||
touch "${TMP_FILE}"
|
||||
|
||||
## Se placer dans le dossier à analyser
|
||||
pushd "${DL_DIR}" > /dev/null
|
||||
|
||||
## Analyser le dossier pour récupérer UN fichier .down (nom de base + extension)
|
||||
DL_FILE=`\ls | \grep ."${EXTENSION}"|head -n 1`
|
||||
|
||||
## Récupérer le nom du fichier (sans extension)
|
||||
BASE_DL_FILE=${DL_FILE%.*}
|
||||
|
||||
## Créer un dossier du même nom et se placer dedans
|
||||
mkdir "${BASE_DL_FILE}"
|
||||
pushd "${DL_DIR}"/"${BASE_DL_FILE}" > /dev/null
|
||||
|
||||
## Déplacer le fichier .down dans le dossier
|
||||
mv "${DL_DIR}"/"${DL_FILE}" .
|
||||
|
||||
## Lancer le téléchargement en passant en argument le fichier .down
|
||||
plowdown -m "${DL_FILE}"
|
||||
|
||||
## Ressortir du dossier de téléchargement
|
||||
popd > /dev/null
|
||||
|
||||
## Ressortir de l'emplacement à analyser
|
||||
popd > /dev/null
|
||||
|
||||
## Supprimer le fichier temporaire
|
||||
rm "${TMP_FILE}"
|
||||
|
||||
else
|
||||
## Script déjà en cours
|
||||
echo "Script de téléchargement déjà en cours."
|
||||
fi
|
||||
|
||||
exit 0
|
||||
# Fin de la boucle principale
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
#!/bin/sh
|
||||
################################################################################################
|
||||
##
|
||||
## Nom: doku2moin.sh
|
||||
##
|
||||
## Version: 0.1
|
||||
##
|
||||
## Licence: Creative Commons
|
||||
##
|
||||
## Comportement: Transformer une page de Dokuwiki est en page compatible avec le wiki Moinmoin.
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
##
|
||||
## Date de création: 15-12-2011
|
||||
##
|
||||
## Auteur: Gardouille
|
||||
##
|
||||
##
|
||||
## Dernière modifications:
|
||||
## 15-12-2011 - 0.1: Création du script
|
||||
## -
|
||||
# **********************************************************************************************
|
||||
## //2011 - :
|
||||
## -
|
||||
## -
|
||||
# **********************************************************************************************
|
||||
## À Modifier:
|
||||
## - Ajouter l'entête pour la syntaxe Moinmoin automatiquement dans le fichier
|
||||
## - Ajouter une transformation pour:
|
||||
## - http://packages.debian.org/search?keywords=NOM_PAQUET -> [[DebianPkg:NOM_PAQUET|Détail du paquet]]
|
||||
## - http://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=NOM_PAQUET -> [[DebianBug:NOM_PAQUET|Rapport de bug NOM_PAQUET]]
|
||||
## - Modifier la transformation de // en '' pour ne pas prendre http:// (par exemple)
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Variables globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
|
||||
## Choix du mode d'exécution du script:
|
||||
## Niveau 0 (mode_debug=0)
|
||||
# Exécution automatique avec normalement aucune interaction avec l'utilisateur.
|
||||
## Niveau 1 (mode_debug=1)
|
||||
# ...
|
||||
## Niveau 2 (mode_debug=2)
|
||||
# L'installation n'est pas en automatique (aptitude, ...)
|
||||
# La sortie des différentes commandes est envoyée sur la sortie standard
|
||||
mode_debug=2
|
||||
|
||||
case "$mode_debug" in
|
||||
0) ## Niveau minimum
|
||||
# Les questions d'aptitude seront automatiquement validées
|
||||
options="-y"
|
||||
# La sortie standard sera redirigée dans un fichier de log
|
||||
sortie="> /dev/null 2> \"${fichier_erreur}\""
|
||||
;;
|
||||
1) ## Niveau moyen
|
||||
# Les questions d'aptitude seront automatiquement validées
|
||||
options="-y"
|
||||
# La sortie standard sera quand même affichée
|
||||
sortie="2> \"${fichier_erreur}\""
|
||||
;;
|
||||
2) ## Niveau maximum
|
||||
# Aucune options pour aptitude
|
||||
options=""
|
||||
# Le résultat des commandes reste sur la sortie standard
|
||||
sortie=""
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
## Fichier contenant les dernières erreurs
|
||||
fichier_erreur="/tmp/erreur_doku2moin.sh.tmp"
|
||||
touch "${fichier_erreur}"
|
||||
|
||||
## Fichier à modifier
|
||||
file_in=$1
|
||||
## Fichier modifié
|
||||
file_out="$1.moin"
|
||||
## Fichier contenant toutes les expressions à appliquer
|
||||
expression="sed_expression"
|
||||
|
||||
## Liste des expressions sed à appliquer à la commande
|
||||
titre1="s/^====== /= /\ns/ ======$/ =/\n"
|
||||
titre2="s/^===== /== /\ns/ =====$/ ==/\n"
|
||||
titre3="s/^==== /=== /\ns/ ====$/ ===/\n"
|
||||
titre4="s/^=== /==== /\ns/ ===$/ ====/\n"
|
||||
titre5="s/^== /===== /\ns/ ==$/ =====/\n"
|
||||
titre6="s/^= /====== /\ns/ =$/ ======/\n"
|
||||
code="s/<code>/{{{/\ns/<\/code>/}}}/\n"
|
||||
## cmd bash:
|
||||
## dokuwiki: <code bash>
|
||||
## moinmoin: {{{#!highlight bash
|
||||
cmd_bash="s/<code \(bash\)>/{{{#!highlight \\\1/\n"
|
||||
file="s/<file>/{{{/\ns/<\/file>/}}}/\n"
|
||||
file_type="s/<file \(.*\) .*/{{{#!highlight \\\1/\n"
|
||||
gras="s/\*\*/\'\'\'/g\n"
|
||||
italique="s/\/\//\'\'/g\n"
|
||||
#lien_externe similaire
|
||||
#liste_puce similaire (-e 's/\(^ \)\*/\1\*/')
|
||||
liste_num="s/\(^ *\)-/\\\11\./\n"
|
||||
## Image:
|
||||
# dokuwiki: {{:teeworlds_01.png|}}
|
||||
# moinmoin: {{attachment:teeworlds_01.png}}
|
||||
image="s/{{:\(.*\)|}}/{{attachement:\\\1}}/\n"
|
||||
|
||||
|
||||
|
||||
# Fin des variables globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fichiers globaux
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
|
||||
# Fin des fichiers globaux
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fonctions globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
## Fonction d'affichage en fonction du mode debug choisi
|
||||
echod() { [ "$mode_debug" -ge 2 ] && echo "(DEBUG) $*" ; }
|
||||
echok() { [ "$mode_debug" -ge 2 ] && echo "(ok) $*" ; }
|
||||
echoi() { [ "$mode_debug" -ge 1 ] && echo "(ii) $*" ; }
|
||||
echow() { [ "$mode_debug" -ge 1 ] && echo "(!!) $*" ; }
|
||||
echnk() { [ "$mode_debug" -ge 0 ] && echo "(EE) $*" ; }
|
||||
|
||||
# Fin des fonctions globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Programme principale
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
|
||||
echo $titre1$titre2$titre3$titre4$titre5$titre6$code$cmd_bash$file$file_type$gras$italique$liste_num$image > $expression
|
||||
|
||||
sed --file="${expression}" "${file_in}" > "${file_out}"
|
||||
|
||||
echo "-------------------------------"
|
||||
echo "-------------------------------"
|
||||
echo "Rajouter au début du fichier (avant le titre):"
|
||||
echo "#language fr
|
||||
||<tablestyle=\"width: 100%; border: 0px hidden\">~-Traduction(s): [[$file_in|English]] - Français||
|
||||
----
|
||||
|
||||
<<TableOfContents()>>"
|
||||
|
||||
exit 0
|
||||
# Fin de la boucle principale
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
#!/bin/sh
|
||||
|
||||
manga_title="area-d"
|
||||
manga_path="./${manga_title}"
|
||||
start_chapter=099
|
||||
max_chapter=100
|
||||
#start_chapter=1
|
||||
#max_chapter=117
|
||||
image_format="jpg"
|
||||
|
||||
|
||||
for chapter in $(seq "${start_chapter}" "${max_chapter}"); do
|
||||
# Create the chapter directory
|
||||
mkdir -p "${manga_path}/${chapter}"
|
||||
pushd "${manga_path}/${chapter}"
|
||||
|
||||
#
|
||||
image=001
|
||||
|
||||
# Allow some download errors
|
||||
error=0
|
||||
max_error=5
|
||||
|
||||
|
||||
while [ $error -lt $max_error ]; do
|
||||
# Build the url to download image and download it
|
||||
url="http://www.lirescan.com/images/lecture-en-ligne/${manga_title}/${chapter}/${image}.${image_format}"
|
||||
printf "Download ${image} from chapter ${chapter}\n"
|
||||
wget ${url} --quiet
|
||||
|
||||
if [ $? -eq 0 ]; then {
|
||||
#image=$((image++))
|
||||
#image=$(printf %02d $((image+1)) )
|
||||
#image=$((image+1))
|
||||
error=0
|
||||
}
|
||||
else {
|
||||
error=$((error+1))
|
||||
}
|
||||
fi
|
||||
# Next image (need to be 0x)
|
||||
image=$(printf "%02d" $((image+1)) )
|
||||
# If image need to be 00x …)
|
||||
#image=$(printf "%03d" $((image+1)) )
|
||||
|
||||
done
|
||||
|
||||
popd
|
||||
|
||||
|
||||
done
|
|
@ -0,0 +1,70 @@
|
|||
#!/bin/bash
|
||||
|
||||
TITLE="${1}"
|
||||
URL="${2}"
|
||||
NB_PAGE="${3}"
|
||||
EXTENSION="${4}"
|
||||
NB_DOWNLOAD=$(ls -Al ${TITLE} | wc -l)
|
||||
|
||||
## Loop
|
||||
#TITLE="loop"
|
||||
#URL="http://www.wallagain.cc/content/comics/one_shot_et_bonus_51778e8bc8178/17_0_loop_536fa75c5b3bb"
|
||||
#NB_PAGE=56
|
||||
#EXTENSION="jpg"
|
||||
|
||||
## Demon King
|
||||
#TITLE="demon_king"
|
||||
#URL="http://www.wallagain.cc/content/comics/one_shot_et_bonus_51778e8bc8178/8_0_one_shot_demon_king_51aa1473753cc/"
|
||||
#NB_PAGE=24
|
||||
#EXTENSION="jpg"
|
||||
|
||||
mkdir -p "${TITLE}"
|
||||
pushd "${TITLE}"
|
||||
|
||||
i=1
|
||||
|
||||
# Ajout du "0" pour le 9 premières pages ...
|
||||
while [ "${i}" -le "9" ]; do
|
||||
|
||||
wget -q "${URL}"/0$i."${EXTENSION}"
|
||||
|
||||
if [ $? -eq 0 ]; then # Dowload OK
|
||||
(( i++ ))
|
||||
else
|
||||
echo "0${i}.${EXTENSION} not download"
|
||||
# Gestion des doubles pages
|
||||
j=${i}
|
||||
(( j++ ))
|
||||
# If it's 0i-0j.jpg page
|
||||
wget "${URL}"/0$i-0$j."${EXTENSION}"
|
||||
# If it's 09-10.jpg page
|
||||
wget "${URL}"/0$i-$j."${EXTENSION}"
|
||||
(( i++ ))
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
while [ "${i}" -le "${NB_PAGE}" ]; do
|
||||
|
||||
wget -q "${URL}"/$i."${EXTENSION}"
|
||||
|
||||
if [ $? -eq 0 ]; then # Dowload OK
|
||||
(( i++ ))
|
||||
else
|
||||
echo "${i}.${EXTENSION} not download"
|
||||
# Gestion des doubles pages
|
||||
j=${i}
|
||||
(( j++ ))
|
||||
wget "${URL}"/$i-$j."${EXTENSION}"
|
||||
(( i++ ))
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
# Bilan
|
||||
echo "${NB_DOWNLOAD} pages téléchargées pour ${NB_PAGE} demandées"
|
||||
|
||||
|
||||
popd
|
||||
|
||||
|
2
ecran
2
ecran
|
@ -8,7 +8,7 @@
|
|||
|
||||
case "${1}" in
|
||||
ds | dockstation | work )
|
||||
xrandr --output HDMI-1 --mode 1920x1200 --above LVDS-1 --output LVDS-1 --mode 1366x768
|
||||
xrandr --output HDMI-1 --mode 1920x1200 --right-of LVDS-1 --output LVDS-1 --mode 1366x768
|
||||
printf 'Xrandr for DisplayPort with dock station';;
|
||||
vga | lug )
|
||||
xrandr --output VGA-1 --mode 1280x1024 --right-of LVDS-1 --output LVDS-1 --mode 1366x768
|
||||
|
|
|
@ -0,0 +1,160 @@
|
|||
#/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Script permettant d'envoyer des SMS grâce à Google Agenda.
|
||||
# Créez un compte google, un nouvel agenda, et configurez-le pour que la notification se fasse par SMS 5 minutes avant l'événement.
|
||||
# L'idée vient de http://macsim.labolinux.net/index.php/post/2008/02/15/137-smsalert-envoyer-des-sms-gratuitement-depuis-ses-serveurs
|
||||
|
||||
# Copyright (C) 2008 Jean-Philippe Brucker — Tous droits réservés.
|
||||
#
|
||||
# Ce programme est un logiciel libre. Vous pouvez le redistribuer ou le
|
||||
# modifier suivant les termes de la "GNU General Public License" version 3,
|
||||
# telle que publiée par la Free Software Foundation.
|
||||
#
|
||||
# Ce programme est distribué dans l’espoir qu’il vous sera utile, mais SANS
|
||||
# AUCUNE GARANTIE : sans même la garantie implicite de COMMERCIALISABILITÉ
|
||||
# ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence Générale
|
||||
# Publique GNU pour plus de détails.
|
||||
#
|
||||
# Ce programme doit être distribué avec une copie de la
|
||||
# License Générale Publique GNU (fichier license.html).
|
||||
# Si ce n’est pas le cas, consultez: <http://www.gnu.org/licenses/gpl.html>.
|
||||
|
||||
import urllib, urllib2
|
||||
import time
|
||||
import re
|
||||
import sys, getopt
|
||||
|
||||
# Modifiez ces champs pour vous logger automatiquement.
|
||||
USER='emilie.nerre@gmail.com'
|
||||
PASSWD='catpower'
|
||||
# Ajoutez /private/full à la fin d'une adresse personalisée.
|
||||
ADRESSE="http://www.google.com/calendar/feeds/default/private/full"
|
||||
|
||||
AIDE="""Aide :
|
||||
Usage : %s [-h] [-e email] [-p pass] [titre [message]]
|
||||
-h ou --help : Afficher l'aide.
|
||||
-e ou --email : spécifier un compte.
|
||||
-p ou --password : spécifier un mot de passe
|
||||
Et c'est tout.
|
||||
""" % sys.argv[0]
|
||||
|
||||
def parserLdc():
|
||||
global title,where, USER, PASSWD
|
||||
opts, args=None, None
|
||||
try:
|
||||
opts, args=getopt.getopt(sys.argv[1:], "he:p:",['help', 'email=', 'password='])
|
||||
except getopt.GetoptError, e:
|
||||
raise 'Argument «%s» inconnu.' % e.opt
|
||||
for option, value in opts:
|
||||
if option in ('-h', '--help'):
|
||||
print AIDE
|
||||
sys.exit(0)
|
||||
elif option in ('-e', '--email'):
|
||||
USER = value
|
||||
elif option in ('-p', '--password'):
|
||||
PASSWD = value
|
||||
if len(args)==2:
|
||||
title = args[0].replace('\'', ' ')
|
||||
where = args[1].replace('\'', ' ')
|
||||
elif len(args)==1:
|
||||
title = args[0].replace('\'', ' ')
|
||||
|
||||
class googleCalendar:
|
||||
""" Cette classe permet de créer un nouvel événement dans un agenda google."""
|
||||
def __init__(self, user, passwd, adress):
|
||||
self.user = user
|
||||
self.passwd = passwd
|
||||
self.adress = adress
|
||||
self.auth = ""
|
||||
|
||||
def connect(self):
|
||||
url={}
|
||||
url['accountType']='GOOGLE'
|
||||
url['Email']=self.user
|
||||
url['Passwd']=self.passwd
|
||||
url['service']='cl'
|
||||
url['source']='exampleCo-exampleApp-1'
|
||||
page = urllib.urlopen("https://www.google.com/accounts/ClientLogin", urllib.urlencode(url))
|
||||
for line in page.readlines():
|
||||
if line.find("Auth=")>-1:
|
||||
self.auth = line[5:-1]
|
||||
return 0
|
||||
return 1
|
||||
def send(self,settings):
|
||||
""" send prend un tuple en argument :
|
||||
Settings={}
|
||||
Settings['title'] => Affiché dans un SMS
|
||||
Settings['content']
|
||||
Settings['where'] => Affiché dans un SMS
|
||||
Settings['start'] => Le SMS est envoyé 5min avant
|
||||
Settings['end']
|
||||
"""
|
||||
if self.connect():
|
||||
print "Connexion impossible !"
|
||||
return
|
||||
Data = """<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'>
|
||||
<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category>
|
||||
<title type='text'>%s</title>
|
||||
<content type='text'>%s</content>
|
||||
<author>
|
||||
<name>%s</name>
|
||||
<email>%s</email>
|
||||
</author>
|
||||
<gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency>
|
||||
<gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'></gd:eventStatus>
|
||||
<gd:where valueString='%s'></gd:where>
|
||||
<gd:when startTime='%s' endTime='%s'><gd:reminder minutes='5' /></gd:when>
|
||||
</entry>""" % (settings['title'], settings['content'], self.user, self.user, settings['where'], settings['start'], settings['end'])
|
||||
Headers={}
|
||||
Headers['Host']='www.google.com'
|
||||
Headers['MIME-Version']='1.0'
|
||||
Headers['Accept']='text/xml'
|
||||
Headers['Authorization']='GoogleLogin auth='+self.auth
|
||||
Headers['Content-length']=str(len(Data))
|
||||
Headers['Content-type']='application/atom+xml'
|
||||
Headers['Cache-Control']='no-cache'
|
||||
Headers['Connection']='close \r\n'
|
||||
try:
|
||||
req = urllib2.Request(self.adress, Data, Headers)
|
||||
handler = urllib2.HTTPHandler()#debuglevel=2)
|
||||
opener = urllib2.OpenerDirector()
|
||||
opener.add_handler(handler)
|
||||
page = opener.open(req)
|
||||
|
||||
# Pas joli-joli, tout ça. À améliorer
|
||||
lien = re.compile(r'HREF=["\'](.+)["\']').findall(page.read())
|
||||
if len(lien)>0:
|
||||
req=urllib2.Request(lien[0],Data,Headers)
|
||||
else:
|
||||
print "Impossible de récupérer l'adresse de redirection."
|
||||
return
|
||||
opener.open(req)
|
||||
print "Événement envoyé."
|
||||
except IOError, e:
|
||||
print e
|
||||
return
|
||||
|
||||
def RFC3339(date):
|
||||
d=[]
|
||||
for i in date:
|
||||
d.append(str(i))
|
||||
for i in xrange(1,6):
|
||||
if len(d[i])<2: d[i]="0"+d[i]
|
||||
return d[0]+'-'+d[1]+'-'+d[2]+'T'+d[3]+':'+d[4]+':'+d[5]+'.000Z'
|
||||
|
||||
def main():
|
||||
global title,where,USER,PASSWD
|
||||
title=""
|
||||
where=""
|
||||
parserLdc()
|
||||
while not USER : USER=raw_input("Entrez votre nom d'utilisateur : ")
|
||||
while not PASSWD: PASSWD=raw_input("Entrez votre mot de passe : ")
|
||||
while not title : title = raw_input("Entrez un titre : ")
|
||||
if not where : where = raw_input("Entrez un message ou tapez [Entrée] pour laisser vide: ")
|
||||
|
||||
event = {'title':title, 'content': "SMS", 'where':where, 'start':RFC3339(time.gmtime(time.time()+60*5+30)), 'end':RFC3339(time.gmtime(time.time()+60*5+45))}
|
||||
|
||||
cal = googleCalendar(USER, PASSWD, ADRESSE)
|
||||
cal.send(event)
|
||||
if __name__=="__main__": main()
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/ruby2.2
|
||||
#
|
||||
# This file was generated by RubyGems.
|
||||
#
|
||||
# The application 'fpm' is installed as part of a gem, and
|
||||
# this file is here to facilitate running it.
|
||||
#
|
||||
|
||||
require 'rubygems'
|
||||
|
||||
version = ">= 0"
|
||||
|
||||
if ARGV.first
|
||||
str = ARGV.first
|
||||
str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
|
||||
if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
|
||||
version = $1
|
||||
ARGV.shift
|
||||
end
|
||||
end
|
||||
|
||||
gem 'fpm', version
|
||||
load Gem.bin_path('fpm', 'fpm', version)
|
Binary file not shown.
|
@ -1,6 +1,6 @@
|
|||
#!/bin/sh
|
||||
localIp='192.168.1.10/24'
|
||||
localBroadcast='192.168.1.255'
|
||||
localIp='192.168.2.10/24'
|
||||
localBroadcast='192.168.2.255'
|
||||
netAdp=$1
|
||||
|
||||
sudo ip addr add $localIp broadcast $localBroadcast dev $netAdp
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
#!/bin/bash
|
||||
localIp='192.168.1.10/24'
|
||||
localBroadcast='192.168.1.255'
|
||||
netAdp=$1
|
||||
mountPath='/home/$USER/jolla'
|
||||
user='nemo'
|
||||
jollaIp='192.168.1.11'
|
||||
|
||||
sudo ip addr add $localIp broadcast $localBroadcast dev $netAdp
|
||||
# First umount if all ready mounted
|
||||
#fusermount -u $mountPath
|
||||
#sleep 2
|
||||
#sshfs $user@$jollaIp:/home/$user -p 22 $mountPath
|
|
@ -1,8 +1,8 @@
|
|||
#!/bin/sh
|
||||
localIp='192.168.1.10/24'
|
||||
localBroadcast='192.168.1.255'
|
||||
localIp='192.168.2.10/24'
|
||||
localBroadcast='192.168.2.255'
|
||||
netAdp=$1
|
||||
jollaIp='192.168.1.15'
|
||||
jollaIp='192.168.2.15'
|
||||
|
||||
sudo ip addr add $localIp broadcast $localBroadcast dev $netAdp
|
||||
sudo ip route add default via $jollaIp dev $netAdp onlink
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
zenity --list --radiolist --title="Type d'url" --text="Vous pouvez maintenant taper le texte que vous souhaitez voir apparaître dans votre fenêtre.
|
||||
Il est possible de faire des effets sur les polices, pour plus d'infos, regardez le menu 'exemples'.
|
||||
|
||||
Evitez les !!, cela provoque des erreurs.
|
||||
|
||||
Exemples de balises pour mettre en forme le texte interne de vos fenêtres (exceptées celles de saisie de texte) :
|
||||
- Mise en gras : <b> texte </b>
|
||||
- Mise en italique : <i> Texte </i>
|
||||
- Mise en couleur : <span color=\"red\"> texte </span> (avec les anti-slashs)
|
||||
|
||||
##### MERCI DE SUPPRIMER CES INFOS AVANT DE CLIQUER SUR FERMER #####
|
||||
Quel est le type d'url que vous désirez?" \
|
||||
youtube (http://www.youtube.com/watch? ...) \
|
||||
url directe d'un fichier flv \
|
||||
autres (pas encore géré)
|
||||
|
||||
|
||||
zenity --list --radiolist --title="Type d'url?" --text="Quel type d'url allez vous utiliser pour télécharger le fichier?" --column="Type d'url" \
|
||||
youtube (http://www.youtube.com/ ...) \
|
||||
url directe d'un fichier flv \
|
||||
autre (pas encore géré)
|
||||
|
||||
|
||||
zenity --calendar --title="hello world" --text="42"
|
||||
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
#!/usr/bin/env bash
|
||||
################################################################################################
|
||||
##
|
||||
## Nom: pubkey.sh
|
||||
##
|
||||
## Licence: Creative Commons
|
||||
##
|
||||
## Comportement: Permet d'obtenir la clé publique d'un dépôt en indiquant la "clef" donnée par l'erreur "NO PUBKEY"
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
##
|
||||
## Date de création: 29-08-2011
|
||||
##
|
||||
## Auteur: ggoodluck47
|
||||
## Lien: http://www.isalo.org/wiki.debian-fr/index.php?title=Erreur_lors_d%27un_update:_NO_PUBKEY#Un_script_pour_se_simplifier_la_vie
|
||||
##
|
||||
##
|
||||
## Dernière modifications:
|
||||
## 29-08-2011: - Création
|
||||
# **********************************************************************************************
|
||||
## //2011: -
|
||||
## -
|
||||
# **********************************************************************************************
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Variables globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
|
||||
# Fin des variables globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fichiers globaux
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
|
||||
# Fin des fichiers globaux
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fonctions globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
# Divers echos ...
|
||||
echoi() { echo " (ii) $*" >> "${log}" ; }
|
||||
echok() { echo " (ok) $*" >> "${log}" ; }
|
||||
echow() { echo " (!!) $*" >> "${log}" ; }
|
||||
echnk() { echo " (EE) $*" >> "${log}" ; }
|
||||
|
||||
# Fin des fonctions globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Programme principale
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
|
||||
# Ajouter une clé GPG au porte-clef
|
||||
# Utiliser gpgkeys pour gérer la suppression
|
||||
echo "coller la clef (8 caractères)"
|
||||
read clef
|
||||
gpg --keyserver pgpkeys.mit.edu --recv-key $clef
|
||||
gpg -a --export $clef | sudo apt-key add -
|
||||
|
||||
exit 0
|
||||
# Fin de la boucle principale
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Remount with default value from /etc/fstab all mountpath
|
||||
|
||||
if [ $(id -u) -eq 0 ]; then
|
||||
# Nok:
|
||||
#mount -a -o remount
|
||||
# OK:
|
||||
#mount ${mountpath} -o remount
|
||||
# OK:
|
||||
#if [ $(mountpoint -q "${mountpath}") ]; then mount "${mountpath}" -o remount; fi
|
||||
# Get the mountpath list
|
||||
grep -v "^#" /etc/fstab | awk '{print $2}'
|
||||
else
|
||||
sudo $0
|
||||
fi
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/ruby2.2
|
||||
#
|
||||
# This file was generated by RubyGems.
|
||||
#
|
||||
# The application 'cabin' is installed as part of a gem, and
|
||||
# this file is here to facilitate running it.
|
||||
#
|
||||
|
||||
require 'rubygems'
|
||||
|
||||
version = ">= 0"
|
||||
|
||||
if ARGV.first
|
||||
str = ARGV.first
|
||||
str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
|
||||
if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
|
||||
version = $1
|
||||
ARGV.shift
|
||||
end
|
||||
end
|
||||
|
||||
gem 'cabin', version
|
||||
load Gem.bin_path('cabin', 'rubygems-cabin-test', version)
|
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/python3
|
||||
# EASY-INSTALL-ENTRY-SCRIPT: 'scdl==1.5.0.post3','console_scripts','scdl'
|
||||
__requires__ = 'scdl==1.5.0.post3'
|
||||
import sys
|
||||
from pkg_resources import load_entry_point
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(
|
||||
load_entry_point('scdl==1.5.0.post3', 'console_scripts', 'scdl')()
|
||||
)
|
|
@ -0,0 +1,86 @@
|
|||
#!/bin/sh
|
||||
################################################################################################
|
||||
##
|
||||
## Nom:
|
||||
##
|
||||
## Version: 0.1
|
||||
##
|
||||
## Licence: Creative Commons
|
||||
##
|
||||
## Comportement:
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
##
|
||||
## Date de création:
|
||||
##
|
||||
## Auteur: Gardouille
|
||||
##
|
||||
##
|
||||
## Dernière modifications:
|
||||
## 27/01/2011: -
|
||||
# **********************************************************************************************
|
||||
## 02/02/2011: -
|
||||
## -
|
||||
# **********************************************************************************************
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Variables globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
|
||||
# Fin des variables globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fichiers globaux
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
|
||||
# Fin des fichiers globaux
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fonctions globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
# Divers echos ...
|
||||
echoi() { echo " (ii) $*" >> "${log}" ; }
|
||||
echok() { echo " (ok) $*" >> "${log}" ; }
|
||||
echow() { echo " (!!) $*" >> "${log}" ; }
|
||||
echnk() { echo " (EE) $*" >> "${log}" ; }
|
||||
|
||||
# Fin des fonctions globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Programme principale
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
|
||||
|
||||
exit 0
|
||||
# Fin de la boucle principale
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
s/^====== /= / titre1
|
||||
s/ ======$/ =/
|
||||
s/^===== /== / titre2
|
||||
s/ =====$/ ==/
|
||||
s/^==== /=== / titre3
|
||||
s/ ====$/ ===/
|
||||
s/^=== /==== / titre4
|
||||
s/ ===$/ ====/
|
||||
s/^== /===== / titre5
|
||||
s/ ==$/ =====/
|
||||
s/^= /====== / titre6
|
||||
s/ =$/ ======/
|
||||
s/<code>/{{{/ code
|
||||
s/<\/code>/}}}/
|
||||
s/<code \(bash\)>/{{{#!highlight \1/ cmd/code bash
|
||||
s/<file>/{{{/ fichier
|
||||
s/<\/file>/}}}/
|
||||
s/<file \(.*\) .*/{{{#!highlight \1/ fichier avec un type
|
||||
s/\*\*/\'\'\'/g gras
|
||||
s/\/\//\'\'/g italique
|
||||
s/\(^ *\)-/\11\./ liste numérotée
|
||||
s/{{:\(.*\)|}}/{{attachement:\1}}/ image
|
||||
|
||||
|
||||
sed '/^[^#]*$/d' bin/wol | sed 's/[^#]*#//g' Uniquement ce qui se trouve après un #
|
|
@ -0,0 +1,26 @@
|
|||
#!/usr/bin/env python
|
||||
import urllib
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
proxy = {'http': 'http://localhost:8250'}
|
||||
|
||||
node="http://s.s/search?output=json&action=expand&expansion=1&q="
|
||||
|
||||
|
||||
if __name__=="__main__":
|
||||
query_str = sys.argv[1:]
|
||||
query = urllib.quote("+".join(query_str))
|
||||
raw_page = urllib.urlopen(node + query, proxies=proxy)
|
||||
page = raw_page.read()
|
||||
try:
|
||||
content = json.loads(page)
|
||||
except:
|
||||
raise
|
||||
print("Server's JSON is corrupted")
|
||||
snippets = content["snippets"]
|
||||
if len(snippets) == 0:
|
||||
print('No results')
|
||||
|
||||
os.system('iceweasel %s' % snippets[0]['cite'])
|
||||
#os.system('x-www-browser %s' % snippets[0]['cite'])
|
|
@ -0,0 +1,57 @@
|
|||
#!/bin/sh
|
||||
# Tiny script to send url, file, video, img, … to a Kodi instance.
|
||||
# Use idok script. Please see https://github.com/metal3d/idok
|
||||
|
||||
# Works with Nautilus, Caja, …
|
||||
# Nautilus: cp send_to_kodi ~/.local/share/nautilus/scripts/ ; chmod +x ~/.local/share/nautilus/scripts/send_to_kodi
|
||||
# Nemo: cp send_to_kodi ~/.gnome2/nemo-scripts/ ; chmod +x ~/.gnome2/nemo-scripts/send_to_kodi
|
||||
# Caja: cp send_to_kodi ~/.config/caja/scripts/ ; chmod +x ~/.config/caja/scripts/send_to_kodi
|
||||
|
||||
################################################
|
||||
# notification depends of system #
|
||||
################################################
|
||||
notif() {
|
||||
# the script is running in a term
|
||||
if [ $(env | grep '^TERM') ]; then printf "\n#### $(basename -- "$0") notification ####\n ⇒ $1\n\n"
|
||||
else # in x, notifications
|
||||
if command -v xmessage 2>/dev/xmessagenull; then xmessage "$1" -timeout 5
|
||||
elif command -v notify-send 2>/dev/null; then notify-send "$1"
|
||||
elif command -v kdialog 2>/dev/null; then { kdialog --title "$1" --passivepopup "This popup will disappear in 5 seconds" 5 & }
|
||||
elif command -v zenity 2>/dev/null; then { echo "message:$1" | zenity --notification --listen & }
|
||||
else echo "$1" > "$(basename -- $0)_notif.txt"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
################################################
|
||||
# dependency check #
|
||||
################################################
|
||||
depend_check() {
|
||||
#printf '%b' "depend_check: $arg \n"
|
||||
for arg; do
|
||||
command -v "$arg" 2>/dev/null || { notif >&2 "Error: Could not find \"$arg\" application."; exit 1; }
|
||||
done
|
||||
}
|
||||
|
||||
################################################
|
||||
# check if input files > min #
|
||||
################################################
|
||||
nb_files_check() {
|
||||
nb_files="$1"
|
||||
min_nb_files="$2"
|
||||
if [ $1 -lt $2 ]; then
|
||||
notif "$1 file selected, \"$(basename -- $0)\" needs at least $2 input file(s)."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
################################################
|
||||
# script #
|
||||
################################################
|
||||
nb_files_check $# 1
|
||||
|
||||
depend_check idok-x86_64
|
||||
|
||||
command idok-x86_64 $*
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,313 @@
|
|||
#!/bin/sh
|
||||
################################################################################################
|
||||
##
|
||||
## Nom: sync_config_file.sh
|
||||
##
|
||||
## Licence: Creative Commons
|
||||
##
|
||||
## Comportement: Synchronise différents fichiers/dossiers de configuration dans un répertoire qui fait office de sauvegarde
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
##
|
||||
## Date de création: 20/10/2010
|
||||
##
|
||||
## Auteur: Gardouille
|
||||
##
|
||||
##
|
||||
## Dernière modifications:
|
||||
## 20/10/2010: - Création
|
||||
# **********************************************************************************************
|
||||
|
||||
## 2011/09/17 -
|
||||
## - Ajout du fichier des applications d'ouverture par défauts pour les fichiers
|
||||
##
|
||||
|
||||
## 16/12/2010: - Ajout de la configuration de parcellite
|
||||
## 21/12/2010: - Ajout de la configuration de screen - panel gnome
|
||||
## 16/02/2011: - Ajout de la configuration de teamviewer
|
||||
## 27/04/2011: - Ajout de la configuration de moc
|
||||
## 18/08/2011: - Ajotu de la configuration de samba
|
||||
## 30/09/2011: - Ajout de la configuration de remmina minecraft
|
||||
# **********************************************************************************************
|
||||
##
|
||||
## À modifier:
|
||||
## - Ajouter la configuration de freeplane
|
||||
## - Faire une nouvelle configuration pour gedit
|
||||
## - Trouver tout les bons droits sur les fichiers à restaurer
|
||||
## - Possibilité de sauvegarder la configuration de gedit avec gconftool? NON
|
||||
##
|
||||
################################################################################################
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Variables globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
# Répertoire personnel de l'utilisateur:
|
||||
USER_DIR="/home/darker"
|
||||
|
||||
# Fin des variables globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fichiers globaux
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
#
|
||||
|
||||
# Fin des fichierss globaux
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fonctions globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
# Divers echos ...
|
||||
echoi() { echo " (ii) $*" >> "${log}" ; }
|
||||
echok() { echo " (ok) $*" >> "${log}" ; }
|
||||
echow() { echo " (!!) $*" >> "${log}" ; }
|
||||
echnk() { echo " (EE) $*" >> "${log}" ; }
|
||||
|
||||
# Fin des fonctions globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Programme principale
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
|
||||
case "$1" in
|
||||
backup)
|
||||
|
||||
if [ "${USER}" = "root" ]; then
|
||||
# Synchronisation des fichiers de configuration de zsh
|
||||
## Droits:
|
||||
## 644: /etc/zsh/*
|
||||
rsync -a --delete /etc/zsh /media/data/config_debian/etc/
|
||||
rsync -a /etc/dir_colors /media/data/config_debian/etc/
|
||||
|
||||
# Synchronisation du fichier hosts
|
||||
## Droits:
|
||||
## 644: /etc/hosts
|
||||
rsync -a /etc/hosts /media/data/config_debian/etc
|
||||
|
||||
# Synchronisation des fichiers de configuration de aptitude
|
||||
## Droits:
|
||||
## 644: /etc/apt/{preferences,sources.list}
|
||||
rsync -a --delete /etc/apt/sources.list /media/data/config_debian/etc/apt
|
||||
rsync -a --delete /etc/apt/preferences /media/data/config_debian/etc/apt
|
||||
|
||||
# Copie du fichier fstab
|
||||
## Droits:
|
||||
## 644: /etc/fstab
|
||||
cp /etc/fstab /media/data/config_debian/etc/fstab.backup
|
||||
|
||||
# Synchronisation du répertoire samba
|
||||
## Droits:
|
||||
## 644: /etc/samba/* (récursif pour tous les fichiers)
|
||||
rsync -a --delete /etc/samba /media/data/config_debian/etc/
|
||||
|
||||
# Fichier dictionnaire de vim
|
||||
## Droits:
|
||||
## 644: /usr/share/vim/vim73/spell/*
|
||||
# rsync -a --delete /usr/share/vim/vim73/spell /media/data/config_debian/usr/share/vim/vim73
|
||||
|
||||
# Configuration des interfaces réseaux
|
||||
## Droits:
|
||||
## 644: /etc/network/interfaces
|
||||
rsync -a --delete /etc/network/interfaces /media/data/config_debian/etc/network/
|
||||
else
|
||||
#gconftool-2 --dump /apps/panel > /media/data/config_debian/home/my-panel-setup.entries
|
||||
echo "pas de sauvegarde gconftool pour le moment"
|
||||
fi
|
||||
|
||||
## Répertoire personnel
|
||||
# Synchro du fichier de config de terminator
|
||||
## Droits:
|
||||
## 644: ~/.config/terminator/config
|
||||
rsync -a --delete "${USER_DIR}"/.config/terminator/config /media/data/config_debian/home/.config/terminator
|
||||
|
||||
# Modèles de documents
|
||||
## 644: ~/.config/user-dirs.dirs ~/Modeles/*
|
||||
rsync -a --delete "${USER_DIR}"/.config/user-dirs.dirs /media/data/config_debian/home/.config/
|
||||
rsync -a --delete "${USER_DIR}"/Modeles /media/data/config_debian/home/
|
||||
|
||||
# Configuration de pidgin (comptes et historique)
|
||||
## Droits:
|
||||
## 700: .purple
|
||||
## 600: .purple/*.xml (récursif)
|
||||
## 644: .purple/*.html (récursif) (historique en lecture pour tout le monde ... ?)
|
||||
rsync -a --delete "${USER_DIR}"/.purple /media/data/config_debian/home
|
||||
|
||||
# Configuration de mozilla
|
||||
## Droits:
|
||||
## 700: .mozilla (récursif pour les dossiers)
|
||||
# rsync -a "${USER_DIR}"/.mozilla/firefox/xb6j4gn3.default/ /media/data/config_debian/home/.mozilla/firefox/
|
||||
rsync -a "${USER_DIR}"/.mozilla/firefox/profiles.ini /media/data/config_debian/home/.mozilla/firefox
|
||||
|
||||
# configuration de icedove sans les mails imap (gmail, hotmail, mailoo)
|
||||
## Droits:
|
||||
## 700: .icedove (récursif pour les dossiers)
|
||||
rsync -a --delete --filter "- ImapMail/" "${USER_DIR}"/.icedove /media/data/config_debian/home/
|
||||
|
||||
# configuration de skype
|
||||
rsync -a --delete "${USER_DIR}"/.Skype /media/data/config_debian/home
|
||||
|
||||
# Configuration de Libreoffice (templates, dico, ...)
|
||||
## Droits:
|
||||
## 755: .libreoffice (récursif pour les dossiers)
|
||||
rsync -a --delete "${USER_DIR}"/.libreoffice /media/data/config_debian/home
|
||||
|
||||
# Configuration de vim
|
||||
## 700: .vim (récursif pour les dossiers)
|
||||
## 640: pour les fichiers
|
||||
rsync -a --delete "${USER_DIR}"/.vim* /media/data/config_debian/home
|
||||
|
||||
# configuration de ssh (nom d'utilisateur suivant l'host)
|
||||
## 700: .ssh
|
||||
## 600: .ssh/*
|
||||
rsync -a --delete "${USER_DIR}"/.ssh/config /media/data/config_debian/home/.ssh
|
||||
|
||||
# Configuration de Eye Of Gnome (eog), plugin activés, ...
|
||||
## -> Pas de fichier de config <-
|
||||
# rsync -a --delete "${USER_DIR}"/.gconf/apps/eog/plugins/%gconf.xml /media/data/config_debian/home/.gconf/apps/eog/plugins
|
||||
|
||||
# configuration de gedit
|
||||
## -> plus de fichier de configuration à propremement parler.
|
||||
# rsync -a --delete "${USER_DIR}"/.gconf/apps/gedit-2 /media/data/config_debian/home/.gconf/apps
|
||||
|
||||
# configuration de gnome
|
||||
# rsync -a --delete "${USER_DIR}"/.gconf/apps/panel /media/data/config_debian/home/.gconf/apps
|
||||
# rsync -a --delete "${USER_DIR}"/.gconf/desktop/gnome /media/data/config_debian/home/.gconf/desktop
|
||||
|
||||
# Script nautilus
|
||||
## Recréer les liens:
|
||||
# Resize Image (1024px) -> ../nautilus-resize-image/ResizeImage.sh
|
||||
# Resize Image (800px) -> ../nautilus-resize-image/ResizeImage.sh
|
||||
## 755: ~/.gnome2/nautilus-scripts/*
|
||||
rsync -a --delete "${USER_DIR}"/.gnome2/nautilus-* /media/data/config_debian/home/.gnome2/
|
||||
|
||||
# script
|
||||
## 755: ~/bin/*
|
||||
rsync -a --delete "${USER_DIR}"/bin /media/data/config_debian/home/
|
||||
|
||||
# configuration de irssi
|
||||
## 755: ~/.irssi/*
|
||||
## 640: ~/.irssi/config
|
||||
rsync -a --delete "${USER_DIR}"/.irssi /media/data/config_debian/home/
|
||||
|
||||
# icônes
|
||||
## Droits:
|
||||
## 777: .icons/*
|
||||
rsync -a --delete "${USER_DIR}"/.icons /media/data/config_debian/home/
|
||||
|
||||
# configuration et bibliothèque de rhythmbox (note des chansons!)
|
||||
## Droits:
|
||||
## 700: .local/share/rhythmbox
|
||||
## 644: .local/share/rhythmbox/*
|
||||
rsync -a --delete "${USER_DIR}"/.local/share/rhythmbox /media/data/config_debian/home/.local/share/
|
||||
## 700: .gconf/apps/rhythmbox
|
||||
## 600: .gconf/apps/rhythmbox/*.xml (récursif)
|
||||
rsync -a --delete "${USER_DIR}"/.gconf/apps/rhythmbox /media/data/config_debian/home/.gconf/apps/
|
||||
# rsync -a --delete /usr/lib/rhythmbox/plugins/vkontakte /media/data/config_debian/usr/lib/rhythmbox/plugins
|
||||
|
||||
# Configuration de filezilla
|
||||
## 644 ~/.filezilla/*
|
||||
rsync -a --delete "${USER_DIR}"/.filezilla /media/data/config_debian/home
|
||||
|
||||
# Configuration de l'applet audio
|
||||
rsync -a --delete "${USER_DIR}"/.gstreamer-0.10 /media/data/config_debian/home
|
||||
|
||||
# Configuration de TSClient
|
||||
## 644: ~/.tsclient/*
|
||||
rsync -a --delete "${USER_DIR}"/.tsclient /media/data/config_debian/home
|
||||
|
||||
# Configuration de Transmission
|
||||
## 755: .config/transmission/* (récursif pour les dossiers)
|
||||
## 600: .config/transmission/* (récursif pour les fichiers)
|
||||
rsync -a --delete "${USER_DIR}"/.config/transmission /media/data/config_debian/home/.config
|
||||
|
||||
# Configuration de l'écran de veille
|
||||
##
|
||||
|
||||
# Configuration de Parcellite
|
||||
rsync -a --delete "${USER_DIR}"/.config/parcellite /media/data/config_debian/home/.config
|
||||
|
||||
# Configuration de screen
|
||||
## 600: .screen/*
|
||||
rsync -a --delete "${USER_DIR}"/.screen /media/data/config_debian/home/
|
||||
|
||||
# Configuration de teamviewer
|
||||
## 755: ~/.teamviewer
|
||||
## NE PAS RESTAURER TOUT LE RÉPERTOIRE TEAMVIEWER -> Trouver le fichier de config
|
||||
rsync -a --delete "${USER_DIR}"/.teamviewer /media/data/config_debian/home/
|
||||
|
||||
# Configuration de moc (music on console)
|
||||
##
|
||||
rsync -a --delete "${USER_DIR}"/.moc /media/data/config_debian/home/
|
||||
|
||||
# Configuration des programmes par défaut pour ouvrir les fichiers:
|
||||
## 644: .local/share/applications/mimeapps.list
|
||||
rsync -a --delete "${USER_DIR}"/.local/share/applications/mimeapps.list /media/data/config_debian/home/.local/share/applications/
|
||||
|
||||
# Configuration de remmina
|
||||
## 755: .remmina
|
||||
## 644: .remmina/*
|
||||
rsync -a --delete ~/.remmina /media/data/config_debian/home/
|
||||
|
||||
# Configuration/save de minecraft
|
||||
## 755: ~/.minecraft (récursif sur les répertoires)
|
||||
## 777 en récursif sur les fichiers?
|
||||
rsync -a --delete ~/.minecraft /media/data/config_debian/home/
|
||||
|
||||
;;
|
||||
|
||||
|
||||
restore)
|
||||
## Restoration /etc/
|
||||
if [ "${USER}" = "root" ]; then
|
||||
rm -rf /etc/zsh/
|
||||
rm -rf /etc/hosts
|
||||
rsync -a /media/data/config_debian/etc/ /etc
|
||||
rsync -a /media/data/config_debian/usr/ /usr
|
||||
|
||||
exit 0
|
||||
else
|
||||
# gconftool-2 --load /media/data/config_debian/home/my-panel-setup.entries
|
||||
echo "pas de gconftool pour le moment"
|
||||
fi
|
||||
|
||||
## Répertoire personnel
|
||||
rsync -a /media/data/config_debian/home/ "${USER_DIR}"
|
||||
|
||||
## Attribution des droits sur "${USER_DIR}"
|
||||
cd "${USER_DIR}"
|
||||
find . -type d -exec chmod 700 {} \;
|
||||
chmod -R 755 bin/
|
||||
chmod -R 700 .ssh/
|
||||
chown -R darker:darker "${USER_DIR}"
|
||||
|
||||
## Attribution des droits sur ~/.freeplane:
|
||||
chmod 644 "${USER_DIR}"/.freeplane/
|
||||
;;
|
||||
*)
|
||||
echo "Utilisation: $0 [backup|restore]"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
#!/bin/bash
|
||||
######################################################
|
||||
## Petit script qui se charge de synchroniser mon wiki
|
||||
## distant dans un répertoire local pour utilisation
|
||||
## offline.
|
||||
######################################################
|
||||
|
||||
# Le serveur où est stocker le wiki
|
||||
serveur="straga"
|
||||
user="darker"
|
||||
|
||||
# Test si présent sur le réseau
|
||||
ping -c 2 "${serveur}" > /dev/null
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
rsync -az "${user}"@"${serveur}":/var/www/dokuwiki /home/"${user}"/depot/ > /dev/null 2> /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Synchro du wiki ${serveur} réussie"
|
||||
else
|
||||
echo "Synchro échouée"
|
||||
fi
|
||||
else
|
||||
echo "Not @home"
|
||||
fi
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#!/bin/bash
|
||||
|
||||
update() {
|
||||
REPO_URL="${1}"
|
||||
REPO_PATH="${2}"
|
||||
|
||||
`ping -q -c 3 "${REPO_URL}" > /dev/null 2>&1`
|
||||
|
||||
# If $REPO_URL is available
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "${REPO_URL} is available"
|
||||
pushd "${REPO_PATH}" > /dev/null 2>&1
|
||||
git pull > /dev/null 2>&1
|
||||
popd > /dev/null 2>&1
|
||||
else
|
||||
echo "${REPO_URL} is not available"
|
||||
fi
|
||||
}
|
||||
|
||||
# Update Puppet IPR repo
|
||||
update "git1.ipr.univ-rennes1.fr" "/home/jegardai/depot/ipr_puppet"
|
||||
# Update Gardouille www data (dokuwiki, shaarli, respawn, ...)
|
||||
update "www.google.fr" "/home/jegardai/depot/gardouille_www"
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/python
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
|
||||
from virtualenv import main
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
|
@ -0,0 +1,166 @@
|
|||
#!/bin/sh
|
||||
################################################################################################
|
||||
##
|
||||
## Nom: wget_list
|
||||
##
|
||||
## Licence: Creative Commons
|
||||
##
|
||||
## Comportement:
|
||||
## Permet de récupérer tous les liens listés dans un fichier en lancant plusieurs wget
|
||||
## en parallèle.
|
||||
## Le fichier qui contient les liens est le premier paramètre passé au script.
|
||||
## Le dossier où enregistré tous les liens correspond au deuxième paramètre passé au script,
|
||||
## ou à un dossier prédéfini.
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
##
|
||||
## Date de création: 03/06/2010
|
||||
##
|
||||
## Auteur: Gardouille
|
||||
##
|
||||
##
|
||||
## Dernière modifications:
|
||||
## O3/O6/2010: - Création
|
||||
# **********************************************************************************************
|
||||
## 02/01/2010: -
|
||||
## -
|
||||
# **********************************************************************************************
|
||||
##
|
||||
##
|
||||
##
|
||||
################################################################################################
|
||||
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Variables globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
# Fichier qui contient la liste des liens à télécharger: "${1}"
|
||||
list_url=${1}
|
||||
# Répertoire où vont être stockés les fichiers téléchargés
|
||||
save_dir=${2}
|
||||
|
||||
# Fin des variables globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Fonctions globales
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
# Divers echos ...
|
||||
echoi() { echo " (ii) $*" >> "${log}" ; }
|
||||
echok() { echo " (ok) $*" >> "${log}" ; }
|
||||
echow() { echo " (!!) $*" >> "${log}" ; }
|
||||
echnk() { echo " (EE) $*" >> "${log}" ; }
|
||||
|
||||
# Fonction d'aide
|
||||
help()
|
||||
{
|
||||
cat << EOF
|
||||
Description:
|
||||
Ce script permet de télécharger tous les liens stockés dans un fichier texte.
|
||||
|
||||
Utilisation:
|
||||
wget_list FICHIER_URL DOSSIER_OU_SAUVEGARDER
|
||||
|
||||
Arguments:
|
||||
FICHIER_URL: Chemin du fichier qui contient la liste des liens à télécharger
|
||||
DOSSIER_OU_SAUVEGARDER: Dossier où vont être sauvegardés les fichiers téléchargés
|
||||
|
||||
Options:
|
||||
-h, --help, help Affiche cette aide.
|
||||
EOF
|
||||
}
|
||||
# Fin des fonctions globales
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
||||
|
||||
# **********************************************************************************************
|
||||
#
|
||||
# Programme principale
|
||||
#
|
||||
# -----------------------------------------------------------
|
||||
|
||||
## Gestion des arguments:
|
||||
# Si l'utilisateur veut afficher l'aide
|
||||
if [ "${1}" = "-h" ] || [ "${1}" = "--help" ] || [ "${1}" = "help" ]
|
||||
then
|
||||
# On appelle la fonction help
|
||||
help
|
||||
# Et on quitte le script
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Vérification du nombre d'arguments:
|
||||
case $# in
|
||||
2 ) # 2 arguments
|
||||
# Si le premier argument n'est pas un fichier
|
||||
if [ ! -f "${1}" ]
|
||||
then
|
||||
echo "!!ERREUR: mauvais premier argument!!"
|
||||
# On affiche l'aide
|
||||
help
|
||||
# Puis on quitte le script
|
||||
exit 1
|
||||
|
||||
# Sinon, si le deuxième argument n'est pas un dossier
|
||||
elif [ ! -d "${2}" ]
|
||||
then
|
||||
echo "!!ERREUR: mauvais deuxième argument!!"
|
||||
# On affiche l'aide
|
||||
help
|
||||
# Et on termine le script
|
||||
exit 1
|
||||
|
||||
# Sinon, c'est que tous les arguments sont corrects
|
||||
else
|
||||
echo "Analyse de ${1} ..."
|
||||
fi
|
||||
;;
|
||||
0 ) # 0 argument
|
||||
echo "!!ERREUR: aucun argument présent!!"
|
||||
# On affiche l'aide
|
||||
help
|
||||
# Et on termine le script
|
||||
exit 1
|
||||
;;
|
||||
* ) # Plus d'un argument
|
||||
echo "ERREUR: Vous ne pouvez pas mettre plus de deux arguments"
|
||||
# On affiche l'aide
|
||||
help
|
||||
# Et on termine le script
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
# Fin de la gestion des arguments
|
||||
|
||||
# On vérifie que le dossier où vont être sauvegardés les fichiers existe
|
||||
[ ! -d "${save_dir}" ] && mkdir -p "${save_dir}"
|
||||
|
||||
# On se place dans le dossier où sauvegarder les fichiers télécharger
|
||||
cd ${save_dir}
|
||||
|
||||
# On télécharge les liens contenu dans le fichier
|
||||
# Options:
|
||||
# -n 1: le nombre maximum de paramètre envoyé est de 1
|
||||
# -P 10: wget sera lancé 10 fois (en parallèle)
|
||||
cat ${list_url} | xargs -n -P 10 wget
|
||||
|
||||
# On revient au dossier précédent
|
||||
cd - > /dev/null
|
||||
|
||||
|
||||
|
||||
exit 0
|
||||
# Fin de la boucle principale
|
||||
# -----------------------------------------------------------
|
||||
# **********************************************************************************************
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/python
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
|
||||
from youtube_dl import main
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
|
@ -0,0 +1,32 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Parse the zshrc file and print a alias's definition
|
||||
|
||||
LIST_ALIAS=$(cat /etc/zsh/zshrc | grep -v '^#' | grep '^[a-zA-Z].*#.*' | cut -d '#' -f2-)
|
||||
|
||||
NUMBER_ALIAS=$(cat /etc/zsh/zshrc | grep -v '^#' | grep '^[a-zA-Z].*#.*' | cut -d '#' -f2- | wc -l)
|
||||
|
||||
NUM_ALIAS=$((echo $RANDOM % ${NUMBER_ALIAS} + 1 | bc))
|
||||
|
||||
#r=$(( echo $RANDOM % 10 ))
|
||||
#r=$(($RANDOM)
|
||||
#r=$RANDOM
|
||||
|
||||
#printf 'There is %s alias in my zshrc file. And i choose the %s\n' ${NUMBER_ALIAS} ${NUM_ALIAS}
|
||||
|
||||
#printf 'Random = %s\n' ${RANDOM}
|
||||
#printf 'r = %s\n' ${r}
|
||||
|
||||
#echo $RANDOM % ${NUMBER_ALIAS} + 1 | bc
|
||||
|
||||
#AWKSCRIPT=' { srand(); print int(rand() * 50) } '
|
||||
AWKSCRIPT=' { srand(); print int(rand() * $1) } '
|
||||
# Command(s) / parameters passed to awk
|
||||
# Note that srand() reseeds awk's random number generator. } '
|
||||
|
||||
echo -n "Random number between 0 and 1 = "
|
||||
|
||||
echo | awk "$AWKSCRIPT"
|
||||
# What happens if you leave out the 'echo'?
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue