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
|
case "${1}" in
|
||||||
ds | dockstation | work )
|
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';;
|
printf 'Xrandr for DisplayPort with dock station';;
|
||||||
vga | lug )
|
vga | lug )
|
||||||
xrandr --output VGA-1 --mode 1280x1024 --right-of LVDS-1 --output LVDS-1 --mode 1366x768
|
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
|
#!/bin/sh
|
||||||
localIp='192.168.1.10/24'
|
localIp='192.168.2.10/24'
|
||||||
localBroadcast='192.168.1.255'
|
localBroadcast='192.168.2.255'
|
||||||
netAdp=$1
|
netAdp=$1
|
||||||
|
|
||||||
sudo ip addr add $localIp broadcast $localBroadcast dev $netAdp
|
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
|
#!/bin/sh
|
||||||
localIp='192.168.1.10/24'
|
localIp='192.168.2.10/24'
|
||||||
localBroadcast='192.168.1.255'
|
localBroadcast='192.168.2.255'
|
||||||
netAdp=$1
|
netAdp=$1
|
||||||
jollaIp='192.168.1.15'
|
jollaIp='192.168.2.15'
|
||||||
|
|
||||||
sudo ip addr add $localIp broadcast $localBroadcast dev $netAdp
|
sudo ip addr add $localIp broadcast $localBroadcast dev $netAdp
|
||||||
sudo ip route add default via $jollaIp dev $netAdp onlink
|
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