Historique et configuration du shell « bash » (interpreteur de commande)

bash étant l’interpréteur de commande le plus courant dans linux.

Dans le dossier de l’utilisateur, il existe deux fichiers important à connaitre:

tapez « ls -al » dans le dossier de l’utilisateur et certains fichiers apparaissent:

drwxr-xr-x 4 dominique dominique 4096 août 25 11:40 .
drwxr-xr-x 3 root root 4096 mai 3 17:40 ..
-rw------- 1 dominique dominique 4692 août 28 22:32 .bash_history
-rw-r--r-- 1 dominique dominique 220 mai 3 17:40 .bash_logout
-rw-r--r-- 1 dominique dominique 3486 mai 3 17:40 .bashrc
drwx------ 2 dominique dominique 4096 mai 3 17:42 .cache
-rw------- 1 dominique dominique 176 juil. 20 15:03 .mysql_history
-rw-r--r-- 1 dominique dominique 675 mai 3 17:40 .profile
drwxr-xr-x 2 root root 4096 août 25 11:39 .vim
-rw------- 1 root root 5785 août 25 11:40 .viminfo

il s’agit des fichiers « .bash_history » et « .bashrc »

.bash_history est la liste des dernières commandes saisies. Très utilise pour se souvenir de ce que l’on a lancé précédemment car il garde un historique conséquent.

.bashrc est le fichier de configuration de l’interpréteur.

Comme vous le voyez, il en existe d’autres, tel que l’historique des commande mysql (si vous l’utilisez) et autres.

Régénérer les fichiers de stratégie par défaut

Par exemple suite a l’effacement accidentel du dossier Policies ou un dommage sur l’un des fichiers contenu dedans…

J’ai eu l’occasion de voir a plusieurs reprises ce problèmes. Il en résulte un fonctionnement hasardeux du domaine (parce qu’il n’y a plus les réglages effectués par défaut), des centaines, voire des milliers de messages d’erreurs dans les événements… bref le chaos !!!

La meilleur action est la restauration mais malheureusement, beaucoup de PME ne sauvegardent que leurs documents… Donc si on ne dispose pas d’une sauvegarde suivre cette méthode:

1) s’assurer de l’arborescence (et recréer si besoin les dossiers manquants):

 C:\windows\SYSVOL
 C:\windows\SYSVOL\domain
 C:\windows \SYSVOL\staging\domain
 C:\windows \SYSVOL\staging areas
 C:\windows \SYSVOL\domain\Policies
 C:\windows \SYSVOL\domain\scripts
 C:\windows \SYSVOL\SYSVOL

Ensuite il faut recréer les liens symbolique existants avec la commande mklink:

 cd c:\windows\SYSVOL
 mklink /J votrenomdedomainefqdn c:\windows\SYSVOL\domain
 cd "staging areas"
 mklink /J votrenomdedomainefqdn c:\windows\SYSVOL\staging\domain

exemple si votre domaine s’appelle « reseau.local »:

 cd c:\windows\SYSVOL
 mklink /J reseau.local c:\windows\SYSVOL\domain
 cd "staging areas"
 mklink /J reseau.local c:\windows\SYSVOL\staging\domain

ce qui recréera les liens symboliques nécessaires.

Terminez par:

dcgpofix /ignoreschema

Les stratégies systèmes « default domain policies » et « default domain controlers policies » sont recrées.

Explication des valeurs de chmod pour les débutants

Valeur Niveau de permission

400 Lecture pour le propriétaire
200 Ecriture pour le propriétaire
100 Exécution pour le propriétaire
40 Lecture pour le groupe
20 Ecriture pour le groupe
10 Exécution pour le groupe
4 Lecture pour tous le monde
2 Ecriture pour tous le monde
1 Exécution pour tous le monde

Donc:

775 Lecture écriture, exécution pour le propriétaire, lecture, écriture, exécution pour le groupe, lecture exécution pour les autres
770 Lecture écriture, exécution pour le propriétaire, lecture, écriture, exécution pour le groupe, rien pour les autres
755 Lecture écriture, exécution pour le propriétaire, lecture, exécution, pour le groupe, lecture exécution pour les autres
777 Lecture, écriture, exécution pour tous le monde.

Récuperer le modèle et le numéro de série d’un ordinateur

Si par exemple lors d’une télémaintenance vous devez récupérer le numéro de série d’un ordinateur, pour faire appel au constructeur ou pour commandé une pièce détachée, il n’est pas toujours évident de demander au client de vous le dicter si vous ne l’avez pas sur la facture de vente. Il existe une façon de l’obtenir en commande msdos:

Pour le modèle:

wmic csproduct get name,vendor,identifyingNumber

Pour le numéro de série

wmic bios get serialnumber

Pour la liste des adresses mac (bien qu’on peu aussi les obtenir avec ipconfig /all)

wmic nic get macaddress,description

Utiliser les checkbox modifiées par uniform.js

Case à cochée "uniform"Uniform.js est un composant permettant d’améliorer le design des checkbox, des bouton radios, des listes déroulantes etc…
Sur leur site vous trouverez aisément comment créer des checkbox « uniformisée » …
Le seul truc qu’on oublier les créateurs de ce plugin jquery, c’est d’expliquer utiliser comment les objets ainsi modifié … car on créer rarement une case à cocher pour décorer sa page…

Or, le fonctionnement des checkbox « uniformisée » est différents des checkbox classique.

uniform.js entoure le checkbox d’un span dans lequel il place une classe « checked » quand l’élément est cochée. La case elle même ne comporte pas d’indication d’état.

Donc on récupère l’état ainsi:

var etat=$("#macaseacocher").parent().hasClass("checked");

Le principal défaut de ce composant c’est le délais entre le click et l’actualisation de son état. Selon les navigateurs, il est courant que l’événement .change arrive avant que la classe ai été ajoutée… => la lecture de valeur est donc faussée:

// code non fiable => résultat 
$("#macaseacocher").change(function(){
 var etat= $("this").parent().hasClass("checked");
 alert(etat);
});

La solution est alors d’intégrer l’appel de la fonction de mise à jour et de ne faire le test qu’après l’exécution de celle ci :

$("#macaseacocher").change(function(){
   // force l'update de uniform avant le test pour fiabiliser le résultat.
   $.uniform.update($(this));
   var etat= $("this").parent().hasClass("checked");
   alert(etat);
});

Ci dessous quelques routines que j’ai extrait d’un script ou je me sert des cases a cochées « uniformisée » pour sélectionner des éléments dans un tableau. En bas de ce tableau, une case a cocher nommée checktout permettait de cocher toute les autres.

Autre exemples de codes:

// compter le nombre de cases cochées (pour un tableau par exemple)
function CompteCasesCochees(){
 //sélecteur des enregistrements cochés sauf "checktout":
 var CasesCochees=$(":checkbox:not('#checktout')").parent(".checked").children();
 return CasesCochees.length;
}
// Recuperer les valeurs des cases cochées d'un tableau
// Ce tableau comportant en derniere ligne une case nommée cochertout permettant de tout (de)selectionner
function getValeursCasesCochees(){
 //selecteur des enregistrements cochés sauf "cochertout":
 var CasesCochees=$(":checkbox:not('#cochertout')").parent(".checked").children();
 var valeurs = [];
 CasesCochees.each(function() {
   valeurs.push($(this).val());
 });
 return valeurs;
}

Additif du 12 septembre:
Pour la lecture et le comptage des cases, la vérification de la classe « checked » sur l’élément le span parent suffit.
En revanche, pour cocher ou décocher par programmation une ou plusieurs cases, il faut réaliser l’action d’une case classique (à savoir ajouter l’attribut « checked » true sur la case) ET ajouter la classe « checked » sur le span parent.

Exemple:

    $(":checkbox").change(function(){
 // force l'update du theme uniform avant le test pour être sur du résultat.

        $.uniform.update($(this));
        if ($(this).attr("id")=="cochetout")
        //l'utilisateur a cliqué sur "tous (de)cocher"
        {
            var indicateur=$(this).parent();
            var cases=$(":checkbox:not('#cochetout')");/
            if ( indicateur.hasClass("checked")){
                cases.attr("checked", true);
                cases.parent().addClass("checked");

            } else {
                cases.attr("checked", false);
                cases.parent().removeClass("checked");
            }
            // on renvoi une mise à jour car on a changé l'état des cases.
            $.uniform.update($(this));
        }
        affichenbcasescochees();
    });

function affichenbcasescochees(){
//selecteur des enregistrements cochés sauf "cochetout":
var CasesCochees=$(":checkbox:not('#cochetout')").parent(".checked").children();
$("#nbselect").html("Nombre d'élements cochés:  "+ CasesCochees.length );
}

Bonjour à tous !

Sur le principe du partage de la connaissance, le premier but de ce site est de faire connaitre les solutions au jours le jours des différents problèmes auquel je suis confronté dans les domaines de:
– la programmation web (html,php, jquery),
– l’administration linux,
– les réseaux Microsoft
– les logiciels conçu par des martiens (tel que Microsoft Exchange).

Afin que peut être, cette modeste contribution permette de sortir une épine du pied a quelques IT qui comme moi perdent un temps précieux a trouvé la petite astuce…