IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Vos scripts shell


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 53
    Par défaut Utilitaire
    Bonjour,
    suite à mon message concernant zenity (http://www.developpez.net/forums/d15...ist-from-file/, j'ai pri un peu de temps pour écrire le script ci-dessous.
    Il ne fait rien de bien exceptionnel et le code doit pouvoir être simplifié, il m'a surtout permis de me faire la main sur quelques commandes que je ne maîtrise pas aussi bien que je le voudrais (sed, awk, zenity)
    Je vous le livre tel quel, n'hésitez pas à commenter, corriger, améliorer.

    Nom du script: Util_V1
    Compatible avec: Bash
    Descriptif: Permet des actions de recherche, de mise à jour, d'installation etc.... (voir fichier d'aide)
    Pré-requis: le paquetage zenity
    Testé sous ubuntu et variantes

    En PJ:
    le script,
    le fichier texte d'explications
    util.tar.gz

  2. #2
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Billets dans le blog
    55
    Par défaut
    Nom du script : pskill.sh

    Compatible avec: Bash

    Descriptif : pskill permet d'envoyer un signal à un processus homogene à un nom de programme. Par defaut, il envoie le signal de mort.

    Pré-requis: bash

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    #!/bin/bash
     
     #author : marc AUTRAN
     #Email : xxxxxx@xxxxx.xx
     #date : 22 dec 2002
     #description : script shell qui envoie un signal à un processus verifiant une expression reguliere
     #le signal est envoye via la commande kill
     #la commande kill respecte la synthaxe suivante : kill -n signal processus
     #ce script fut teste sous linux noyau 2.2.16
     
     #traite l'option -h
     for option
     do
       if [ "$option" = -h ]
       then
         echo 'Usage pskill.sh [-q] [-v] [-h] [-sig] <expression reguliere> '
         echo "Permet d'envoyer un signal via la commande kill aux processus dont la commande verifie <expression reguliere>"
         echo '-q : query, demande confirmation pour chaque processus'
         echo '-v : verbeux, affiche ce qui est fait'
         echo "-h : affichage de ce message d'aide"
         echo "-sig : ou sig est un signal, utilisation de ce signal au lieu du signal par defaut (SIGTERM). sig peut etre numerique ou symbolique selon ce qu'accepte la commande kill"
         exit
       fi
     done
     
     #traite les options -q -v et -signal
     declare -i compteur=0
     s=0
     v=0
     q=0
     while [ $# -gt 1 ]
     do
       case $1 in
         -v )
           echo 'debut de traitement ...'
           v=1
           shift;;
         -q )
           q=1
           shift;;
         -* )
           s=$1
           shift;;
       esac
       compteur=compteur+1
       if [ $v = 0 ] &&[ $q = 0 ] && [ $s = 0 ]
       then
         break
       fi
       if [ $compteur = 3 ]
       then
         break
       fi
     done
     
     if [ $q = 0 ]
     then
       if [ $s = 0 ]
       then
         signal=SIGTERM #le signal par defaut est SIGTERM
       else
         signal=`echo $s | cut -c2-6` #recupere le signal
       fi
       processus=`ps -e | grep $1 | cut -c1-6` #trouve le pid du process
       kill -n $signal $processus #envoie le signal au processus cible
       if [ $v = 1 ]
       then
         echo "signal $signal envoye a $1"
       fi
     else
       #mode query
       echo "voulez vous killer $1 o n"
       read r
       if [ "$r" = o ]
       then
         if [ $s = 0 ]
         then
           signal=SIGTERM
         else
           signal=`echo "$s" | cut -c2-6`
         fi
         processus=`ps -e | grep $1 | cut -c1-6`
         kill -n $signal $processus
         if [ $v = 1 ]
         then
           echo "signal $signal envoye a $1"
         fi
       fi
     fi
     
     if [ $v = 1 ]
     then
       echo 'fin de traitement'
     fi
    Développeur Java
    Site Web

  3. #3
    Membre averti Avatar de Louinux
    Homme Profil pro
    Ganil, Cyceron
    Inscrit en
    Décembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ganil, Cyceron
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2018
    Messages : 52
    Par défaut Le fameux script pavé
    Bonjour bonjour,
    voici un script (c'était mon tout premier script) qui utilise rsync sur centos.

    NOM DU SCRIPT : backup_ganil.sh

    COMPATIBLE : avec bash

    Descriptif : permet le backup d'un serveur à un autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    #!/bin/sh
     
    volumes=$(cut -d' ' /etc/auto.netapp -f1)
     
            if ! mount | grep /dev/vd
            then    echo "WARNING !! DELL storage not mounted !"; exit
            fi
     
    declare -A VOLS
    running_rsync=`pgrep -a rsync | cut -d ' ' -f 7`
     
    for rrsync in $running_rsync
    do
           #VOLS[$rrsync]=1
    done
     
    for K in "${!VOLS[@]}"
    do
           echo $K
    done
            echo "${#VOLS[@]}"
     
    if [ "${#VOLS[@]}" -gt 1 ]; then
    echo "rsync is running, exit"; exit
    else echo "rsync is not running"
    fi
     
    #VARS
    test=$1
    if [ $# -eq 0 ] ; then
     
    for vol in $volumes
    do
     
    if [ ! -f "/root/backup_logs/$vol.log" ]; then
     
            ls /netapp/$vol > /dev/null 2>&1
     
            if [ $? -gt 0 ]; then
                    echo $vol non disponible
                    continue
            fi
     
            echo $vol
     
            # to do : évaluer la taille qu'il reste sur la partition
            # premier backup pour ce volume, questionner l'utilisateur sur la partition
            PS3="Sur quel serveur installer la sauvegarde ? "
            select rep in r740disks md1400_1 exit
     
            do
            case $rep in
            r740disks) break;;
            md1400_1) break;;
            exit) exit;;
            esac
            done
     
            echo $rep > /root/backup_logs/$vol.log
     
            destsize=`df | grep $rep | awk '{ print $4 }'`
            destsizeh=`df -h | grep $rep | awk '{ print $4 }'`
            sourcesize=`df | grep $vol | awk '{ print $3 }'`
            sourcesizeh=`df -h | grep $vol | awk '{ print $3 }'`
            sourcesize2=`df -h | grep $vol | awk '{ print $2 }'`
            echo source : $vol $sourcesizeh/$sourcesize2 "|" destination : $rep $destsizeh
            if [ $sourcesize -gt $destsize ]
            then echo "Destination trop petite !" exit;
            fi
            source="/netapp/$vol"
            dest="/mnt/$rep/volumes/"
            cmd="rsync -ah -e ssh --exclude=.snapshot $source $dest 2>> /root/backup_logs/$vol.log"
            mail -s "Backup NFS Ganil" toto@hotmail.fr <<< "La copie s'effectue de $source vers $dest."
            echo $cmd
            eval $cmd
            mail -s "Backup NFS Ganil" toto@hotmail.fr  <<< "La copie de $source vers $dest est terminée !"
            exit
    fi
    done
     
    elif [ "$test" == "schedule" ] ; then
     
    #liste le fichier le plus vieux du répertoire
    old=`ls -t /root/backup_logs/ | tail -1`
    old=${old:0:-4}
    echo Incrémentale de $old
    rep=`sed -n 1p /root/backup_logs/$old.log`
    source="/netapp/$old"
    dest="/mnt/$rep/volumes/"
    echo Destination : $rep
            if [ -d "$dest" ]; then
                    cmd="rsync -ah -e ssh --exclude=.snapshot $source $dest 2>> /root/backup_logs/$old.log"
                    mail -s "Backup NFS Ganil" toto@hotmail.fr <<< "La copie s'effectue de $source vers $dest"
     
                    echo $cmd
                    eval $cmd
     
                    mail -s "Backup NFS Ganil" toto@hotmail.fr <<< "La copie de $source vers $dest est terminée !"
            else
                    echo "Le répertoire $dest n'est pas présent, vous allez sortir" exit;
            fi
    fi
    NOM DU SCRIPT : backup_ganil_cifs.sh

    COMPATIBLE : powershell

    Descriptif : permet le backup d'un serveur à un autre

    Et le voici mais avec robocopy :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    # SCRIPT PARAM
    param([string] $arg1)
     
    #VARS
    $expediteur = "titi@hotmail.fr"
    $destinataire = "toto@hotmail.fr"
    $serveur = "mail.toto.fr"
     
    #Robocopy est en marche ou pas ?
    $programName = "robocopy"
    $isRunning = (Get-Process | Where-Object { $_.Name -eq $programName }).Count -gt 1
     
    if ($isRunning)
    {
    	echo "ROBOCOPY IS RUNNING, exiting..." ; exit
    	echo "ROBOCOPY IS RUNNING, exiting..." | Out-File -FilePath C:\Users\bckcifs\Desktop\robocopy_out.txt
    }
    else 
    {
    	echo "ROBOCOPY IS NOT RUNNING !" 
    	echo "ROBOCOPY IS NOT RUNNING !" | Out-File -FilePath C:\Users\bckcifs\Desktop\robocopy_out.txt
    }
     
    # liste des volumes
    $volumes = New-Object 'System.Collections.Generic.Dictionary[String,String]'
    $fichier = "C:\Users\bckcifs\Desktop\cifs_volumes.txt"
    $fichiercontenu = get-content $fichier
     
    foreach($source in $fichiercontenu)
    {
    	$dum,$dum2,$server,$vol = $source.split("\\")	
    	$volumes.Add($vol, $source)
    }
     
    # VERSION INTERACTIVE
    if([string]::IsNullOrEmpty($arg1))
    {
    	foreach($volume in $volumes.GetEnumerator())
    	{		
    		$vol = $volume.Key
    		$source = $volume.Value
     
    		#Vérifier la présence des fichiers de log des volumes :
    		if (Test-Path("C:\Users\bckcifs\Desktop\backups_logs\$vol.log"))
    		{	
    			continue;							
    		}
    		else 
    		{
    			Write-Host $source
     
    			if([string]::IsNullOrEmpty($source) -or(-Not (Test-Path("$source"))) ) { echo "$source Introuvable"; continue; }
     
    			# tester taille volumes : 
    			# test montage destination
     
    			$dest=Read-Host "Choisissez une destination : [1] (E:\volumes) | [2] (Z:\)"
    			Switch ($dest)
    			{
    				1 { $dest="E:\volumes" }
    				2 { $dest="Z:\" }					
    			}
     
     
    			if([string]::IsNullOrEmpty($dest) -or (-Not (Test-Path("$dest"))) ) { echo "Destination introuvable"; exit }
     
    			$dest+="\$vol"	
     
    			$dest > C:\Users\bckcifs\Desktop\backups_logs\$vol.log 
     
     
    			#MAIL DEBUT		
    			$objet = "Backup CIFS Ganil  " + (Get-Date -format 'd MM yyyy')
    			$texte = "La copie s'effectue de $source vers $dest"
    			$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte
    			$SMTPclient = new-object System.Net.Mail.SmtpClient $serveur
    			$SMTPclient.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
    			$SMTPclient.Send($message)
     
    			$cmd = "robocopy $source $dest /XD '.bplusvtoc' '.vtoc' '.snapshot' /R:0 /W:0 /TEE /NP /MIR /SEC /SECFIX /NJS /NJH /NDL /NFL /NC /NS /UNILOG+:C:\Users\bckcifs\Desktop\backups_logs\$vol.log"
    			echo $cmd
    			iex $cmd
     
    			#MAIL FIN	
    			$logfile1 = "C:\Users\bckcifs\Desktop\backups_logs\$vol.log"
    			$objet = "Backup CIFS Ganil  " + (Get-Date -format 'd MM yyyy')
    			$texte = "La copie $source vers $dest est terminée."
    			$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte
    			$attachment = new-object System.Net.Mail.Attachment $logfile1
    			$message.Attachments.Add($attachment)
    			$SMTPclient = new-object System.Net.Mail.SmtpClient $serveur
    			$SMTPclient.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
    			$SMTPclient.Send($message) 
     
    			exit
    		}
    	}
     
    }	# fin version interactive
    elseif($arg1 -eq "schedule")
    {
     
    	Write-Output "$(Get-Date -format 'd/MM/yyyy')" | Out-File -FilePath C:\Users\bckcifs\Desktop\robocopy_out.txt
     
    	#Comparer les dates des fichiers et sortir le plus anciens
    	$date1 = ''
    	$oldest = ''
    	$olddate = ''
     
    	foreach ($vol in Get-ChildItem -Path "C:\Users\bckcifs\Desktop\backups_logs\" *.log -File)
    	{		
     
    		if (!$olddate) { $oldest = $vol.Name; $olddate = $vol.LastWriteTime.ToString("yyyy-MM-dd H:m:s");}  
    		else
    		{
    			if ($vol.LastWriteTime.ToString("yyyy-MM-dd H:m:s") -lt $olddate)
    			{ 						
    				$oldest = $vol.Name; 
    				$olddate =  $vol.LastWriteTime.ToString("yyyy-MM-dd H:m:s")				
    			}
    		}		
    	}
     
    	$oldvol = $oldest.Split(".")
    	$src = $volumes[$oldvol]
    	$dest = (Get-Content -Path C:\Users\bckcifs\Desktop\backups_logs\$oldest -totalcount 1)
     
    	if( [string]::IsNullOrEmpty($src) -or (-Not (Test-Path("$src"))) ) { echo "Source Introuvable"; exit }
    	if( [string]::IsNullOrEmpty($dest) -or (-Not (Test-Path("$dest"))) )	{ echo "Destination introuvable"; exit }
     
    	$dest > C:\Users\bckcifs\Desktop\backups_logs\$oldest
    	$olddate >> C:\Users\bckcifs\Desktop\backups_logs\$oldest 
     
     
    	# MAIL DEBUT DE SAUVEGARDE
    	$objet = "Backup CIFS Ganil " + (Get-Date -format 'd MM yyyy')
    	$texte = "La copie s'effectue de $src vers $dest"
    	$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte
    	$SMTPclient = new-object System.Net.Mail.SmtpClient $serveur
    	$SMTPclient.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
    	$SMTPclient.Send($message)
     
    	# ROBOCOPY
    	$cmd = "robocopy $src $dest /XD '.bplusvtoc' '.vtoc' '.snapshot' /R:0 /W:0 /E /TEE /NP /MIR /SEC /SECFIX /NJS /NJH /NDL /NFL /NC /NS /UNILOG+:C:\Users\bckcifs\Desktop\backups_logs\$oldest"
    	echo $cmd
    	echo "Debut de la sauvegarde auto..." $cmd >> C:\Users\bckcifs\Desktop\robocopy_out.txt	
    	iex $cmd
     
    	# MAIL FIN
    	$logfile = "C:\Users\bckcifs\Desktop\backups_logs\$oldest"
    	$objet = "Backup CIFS Ganil  " + (Get-Date -format 'd MM yyyy')
    	$texte = "La copie de $src vers $dest est terminée."
    	$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte
    	$attachment = new-object System.Net.Mail.Attachment $logfile
    	$message.Attachments.Add($attachment)
    	$SMTPclient = new-object System.Net.Mail.SmtpClient $serveur
    	$SMTPclient.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
    	$SMTPclient.Send($message)
     
    	echo "Fin de sauvegarde" >> C:\Users\bckcifs\Desktop\robocopy_out.txt
    }
    CDLT

  4. #4
    ALT
    ALT est déconnecté
    Membre Expert
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 373
    Par défaut
    Nom du script: TesteRéseau


    Compatible avec: Bash


    Descriptif: permet de tester une connexion à l'Internet, même dans une entreprise dotée de sous-réseaux. Bien sûr, il faut remplacer les adresses IP par celles qui correspondent au réseau à tester.


    Pré-requis: aucun


    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #!/bin/bash
     
     
    #**** Teste le réseau à différents niveaux ****
     
     
    function teste
    {
        ligne=`ping -c1 $1 2>/dev/null` #** $1 est l'adresse testée (1er argument de la ligne d'appel à teste) **
        if [[ $ligne =~ .*icmp_seq.* ]] #** si 'icmp_seq' est dans le résultat, alors ping a répondu & on affiche le message $2, sinon, il y a erreur & affichage de $3 **
        then
            echo -e "\e[32m$2 \e[0m"
        else
            echo -e "\e[31mERREUR : $3 \e[0m"
        fi
    }
     
    #** appel de la fonction teste avec différentes adresses & les messages (ça baigne ou ça coince) correspondants **
    teste "192.168.0.254" "La passerelle est accessible" "LA CARTE RÉSEAU SEMBLE MAL CONFIGURÉE"
    teste "192.168.0.1" "Le DNS est accessible" "Le DNS est inaccessible"
    teste "10.0.120.46" "Le routage est bon avec le reste du réseau" "Pas de routage entre les réseaux de l'entreprise"
    teste "212.27.48.10" "L'Internet est accessible" "L'Internet est inaccessible"
    teste "www.free.fr" "Le DNS répond correctement" "Le DNS est en panne"

  5. #5
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 304
    Par défaut
    Citation Envoyé par hornetbzz Voir le message
    C'est ma journée créativité :-)

    Descriptif:
    "nettoie" un fichier bash en supprimant les lignes de commentaires et les lignes vides.
    Salut !

    J'utilise un alias sed

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    11:52:26 ~ -1- $ type pretty.remove.blanks+comments
    pretty.remove.blanks+comments is aliased to `egrep -v '(^[[:space:]]*#|^$|^[[:space:]]*//|^[[:space:]]*;)''
    12:10:15 ~ -1- $
    Exemple de fIchier d'origine pris sur mon système de fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
    12:10:57 ~ -1- $ cat /etc/bash.bashrc 
    # System-wide .bashrc file for interactive bash(1) shells.
     
    # To enable the settings / commands in this file for login shells as well,
    # this file has to be sourced in /etc/profile.
     
    # If not running interactively, don't do anything
    [ -z "$PS1" ] && return
     
    # check the window size after each command and, if necessary,
    # update the values of LINES and COLUMNS.
    shopt -s checkwinsize
     
    # set variable identifying the chroot you work in (used in the prompt below)
    if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
        debian_chroot=$(cat /etc/debian_chroot)                                                                                                                                                                                                    
    fi                                                                                                                                                                                                                                             
     
     
    # set a fancy prompt (non-color, overwrite the one in /etc/profile)                                                                                                                                                                            
    #PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '                                                                                                                                                                                           
     
    use_color=false                                                                                                                                                                                                                                
     
    # Set colorful PS1 only on colorful terminals.                                                                                                                                                                                                 
    # dircolors --print-database uses its own built-in database                                                                                                                                                                                    
    # instead of using /etc/DIR_COLORS.  Try to use the external file                                                                                                                                                                              
    # first to take advantage of user additions.  Use internal bash                                                                                                                                                                                
    # globbing instead of external grep binary.                                                                                                                                                                                                    
    safe_term=${TERM//[^[:alnum:]]/?}   # sanitize TERM                                                                                                                                                                                            
    match_lhs=""                                                                                                                                                                                                                                   
    [[ -f ~/.dir_colors   ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"                                                                                                                                                                          
    [[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"                                                                                                                                                                        
    [[ -z ${match_lhs}    ]] \                                                                                                                                                                                                                     
            && type -P dircolors >/dev/null \                                                                                                                                                                                                      
            && match_lhs=$(dircolors --print-database)                                                                                                                                                                                             
    [[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true                                                                                                                                                                        
     
     
    if ${use_color} ; then                                                                                                                                                                                                                         
     
            # enable color support of ls and also add handy aliases
            if [ -x /usr/bin/dircolors ]; then
            # test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
            eval `dircolors`
            LS_COLORS="$LS_COLORS*.JPG=01;35:*.GIF=01;35:*.jpg=01;35:*.gif=01;35:*.jpeg=01;35:*.pcx=01;35:*.png=01;35:*.pnm=01;35:*.bz2=01;31:*.mpg=01;38:*.mpeg=01;38:*.MPG=01;38:*.MPEG=01;38:*.m4v=01;038:*.mp4=01;038:*.swf=01;038:*.avi=01;38:*.AVI=01;38:*.wmv=01;38:*.WMV=01;38:*.asf=01;38:*.ASF=01;38:*.mov=01;38:*.MOV=01;38:*.mp3=01;39:*.ogg=01;39:*.MP3=01;39:*.Mp3=01;39"
            fi
            # Enable colors for ls, etc.  Prefer ~/.dir_colors #64489
            #if type -P dircolors >/dev/null ; then
            #        if [[ -f ~/.dir_colors ]] ; then
            #                eval $(dircolors -b ~/.dir_colors)
            #        elif [[ -f /etc/DIR_COLORS ]] ; then
            #                eval $(dircolors -b /etc/DIR_COLORS)
            #        fi
            #fi
     
            if [[ ${EUID} == 0 ]] ; then
                    PS1='\[\033[0;37m\]\[\033[0;35m\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
            else
                    PS1='\[\033[0;37m\]\[\033[0;35m\]${debian_chroot:+($debian_chroot)}\[\033[0;35m\]\u@\h\[\033[0;37m\]:\[\033[0;36m\]\w >\[\033[0;00m\] '
            fi
     
            alias ls='ls --color=auto'
            alias grep='grep --colour=auto'
            alias fgrep='fgrep --colour=auto'
            alias egrep='egrep --colour=auto'
            alias ll='ls -lF'
            alias la='ls -A'
            alias l='ls -CF'
    else
            if [[ ${EUID} == 0 ]] ; then
                    # show root@ when we don't have colors
                    PS1='\u@\h \W \$ '
            else
                    PS1='\u@\h \w \$ '
            fi
    fi
     
    # Try to keep environment pollution down, EPA loves us.
    unset use_color safe_term match_lhs
     
    # Commented out, don't overwrite xterm -T "title" -n "icontitle" by default.
    # If this is an xterm set the title to user@host:dir
    #case "$TERM" in
    #xterm*|rxvt*)
    #    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
    #    ;;
    #*)
    #    ;;
    #esac
     
    # enable bash completion in interactive shells
    if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
        . /etc/bash_completion
    fi
     
    # sudo hint
    #if [ ! -e $HOME/.sudo_as_admin_successful ]; then
    #    case " $(groups) " in *\ admin\ *)
    #    if [ -x /usr/bin/sudo ]; then
    #       cat <<-EOF
    #       To run a command as administrator (user "root"), use "sudo <command>".
    #       See "man sudo_root" for details.
    #
    #       EOF
    #    fi
    #    esac
    #fi
     
    # if the command-not-found package is installed, use it
    if [ -x /usr/lib/command-not-found ]; then
            function command_not_found_handle {
                    # check because c-n-f could've been removed in the meantime
                    if [ -x /usr/lib/command-not-found ]; then
                       /usr/bin/python /usr/lib/command-not-found -- $1
                       return $?
                    else
                       return 127
                    fi
            }
    fi
     
    12:11:10 ~ -1- $

    Le même fIchier nettoyé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    12:11:10 ~ -1- $ pretty.remove.blanks+comments /etc/bash.bashrc    
    [ -z "$PS1" ] && return
    shopt -s checkwinsize
    if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
        debian_chroot=$(cat /etc/debian_chroot)
    fi
    use_color=false
    safe_term=${TERM//[^[:alnum:]]/?}   # sanitize TERM
    match_lhs=""
    [[ -f ~/.dir_colors   ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
    [[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"
    [[ -z ${match_lhs}    ]] \
            && type -P dircolors >/dev/null \
            && match_lhs=$(dircolors --print-database)
    [[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true
    if ${use_color} ; then
            if [ -x /usr/bin/dircolors ]; then
            eval `dircolors`
            LS_COLORS="$LS_COLORS*.JPG=01;35:*.GIF=01;35:*.jpg=01;35:*.gif=01;35:*.jpeg=01;35:*.pcx=01;35:*.png=01;35:*.pnm=01;35:*.bz2=01;31:*.mpg=01;38:*.mpeg=01;38:*.MPG=01;38:*.MPEG=01;38:*.m4v=01;038:*.mp4=01;038:*.swf=01;038:*.avi=01;38:*.AVI=01;38:*.wmv=01;38:*.WMV=01;38:*.asf=01;38:*.ASF=01;38:*.mov=01;38:*.MOV=01;38:*.mp3=01;39:*.ogg=01;39:*.MP3=01;39:*.Mp3=01;39"
            fi
            if [[ ${EUID} == 0 ]] ; then
                    PS1='\[\033[0;37m\]\[\033[0;35m\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
            else
                    PS1='\[\033[0;37m\]\[\033[0;35m\]${debian_chroot:+($debian_chroot)}\[\033[0;35m\]\u@\h\[\033[0;37m\]:\[\033[0;36m\]\w >\[\033[0;00m\] '
            fi
            alias ls='ls --color=auto'
            alias grep='grep --colour=auto'
            alias fgrep='fgrep --colour=auto'
            alias egrep='egrep --colour=auto'
            alias ll='ls -lF'
            alias la='ls -A'
            alias l='ls -CF'
    else
            if [[ ${EUID} == 0 ]] ; then
                    PS1='\u@\h \W \$ '
            else
                    PS1='\u@\h \w \$ '
            fi
    fi
    unset use_color safe_term match_lhs
    if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
        . /etc/bash_completion
    fi
    if [ -x /usr/lib/command-not-found ]; then
            function command_not_found_handle {
                    if [ -x /usr/lib/command-not-found ]; then
                       /usr/bin/python /usr/lib/command-not-found -- $1
                       return $?
                    else
                       return 127
                    fi
            }
    fi
    12:11:19 ~ -1- $
    Ça supprime uniquement les lignes commençant par # (bash & co) // (je sais plus) ; (lisp) ou les lignes vides.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par hornetbzz Voir le message
    EDIT2: en bash c'est l'histoire d'une ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SERVER_IP=$(wget -q http://www.monip.org/ -O- | grep "IP :" | cut --characters=-80 | sed -e 's/^.* \(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\).*$/\1/')
    Bonjour,

    Si je puis me permettre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SERVER_IP=$(wget -qO- whatismyip.org)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SERVER_IP=$(curl whatismyip.org)
    Raccourcissent de plus de moitié la ligne

  7. #7
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Bonjour,

    Si je puis me permettre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SERVER_IP=$(wget -qO- whatismyip.org)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SERVER_IP=$(curl whatismyip.org)
    Raccourcissent de plus de moitié la ligne
    ça m'aurait bien plus si cela fonctionnait sauf qu'aucune de ces 2 propositions ne fonctionnent.

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par hornetbzz Voir le message
    ça m'aurait bien plus si cela fonctionnait sauf qu'aucune de ces 2 propositions ne fonctionnent.
    Salut,

    Quand j'ai posté ça marchait, mais là apparemment le site est en carafe

    S'pad'mafôt, patapé hein ?

Discussions similaires

  1. Script shell
    Par anzar dans le forum Linux
    Réponses: 4
    Dernier message: 03/12/2004, 14h41
  2. [JSP] script shell
    Par goolix dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 06/08/2004, 09h08
  3. Exécution d'un script shell
    Par Manu0086 dans le forum Linux
    Réponses: 8
    Dernier message: 15/06/2004, 16h31
  4. Explication script shell
    Par crasho007 dans le forum Linux
    Réponses: 2
    Dernier message: 14/06/2004, 13h54
  5. Cron + terminal + script shell
    Par nicolas.pissard dans le forum Linux
    Réponses: 3
    Dernier message: 17/03/2004, 09h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo