Tutoriel: Création d'un compte Github et y ajouter un projet en utilisant la ligne de commande


Dans ce tutoriel on va essayer de créer un compte Github et essayer d'utiliser la terminale Gnu/Linux (Je vais utiliser Bash dans ce tutoriel) pour y ajouter un projet.

Aller sur le site github.com 


Création d'un compte:


Choisir le plan de notre compte Github (Free pour moi):


Vérification de notre compte par e-mail:






Voilà maintenant, notre compte Github est actif: 


NB: On doit se souvenir de notre pseudo, e-mail et mot de passe de Github.
Dans cet exemple:
  • Pseudo: nexus66
  • E-mail: chihebnexus66@gmail.com
  • Password: Mon Password

Création d'un nouveau dépôt (Repository):



NB: Il faut noter:
  • Owner = Propriétaire: nexus66 (pour ce tutoriel)
  • Repository name = Nom du dépôt: test (pour ce tutoriel)
  • Description = Description: Quelques description de notre dépôt
  • Public/Private = Publique/Privé: Type de ce dépôt publique ou privé (j'ai choisi publique)
  • Initialize this repository with a README.md = Initialiser ce dépôt avec un fichier README.md
  • Add .gitignore = Ajouter un fichier .gitignore: J'ai ajouté un fichier .gitignore pour Python
  • Add a licence = Ajouter une licence: J'ai ajouté une licence de type GPLv3.0 
On aura une résultat comme suit:




Retour à notre terminale Gnu/linux:

En premier lieu, on doit installer ou mettre à jour git. Actuellement j'utilise Ubuntu 14.04 et pour mettre à jour git je passe cette commande à ma terminale (j'utilise Bash):

sudo apt-get install git

Pour les autres distributions et les autres OS:

Fedora:
$ yum install git

Gentoo:
$ emerge --ask --verbose dev-vcs/git

Arch Linux:
$ pacman -S git

OpenSUSE:
$ zypper install git

FreeBSD:
$ cd /usr/ports/devel/git
$ make install

Solaris 11 Express:
$ pkg install developer/versioning/git

OpenBSD
$ pkg_add git
Configuration de git: 


Ajouter notre pseudo nexus66 de notre compte Github à git:
git config --global user.name "nexus66"


Ajouter notre e-mail de notre compte Github à git:
git config --global user.email "chihebnexus66@gmail.com"

NB: Cette configuration n'est nécessaire qu'une seule fois pour un compte Github unique. Si vous utilisez plusieurs comptes Github, alors, vous devez le configurer à chaque fois pour qu'il puisse suivre vos comptes Github.

Cloner votre dépôt sur votre ordinateur:


pour cloner votre dépôt sur votre ordinateur, vous devez posséder l'URL du git de votre dépôt qui se trouve dans le de votre dépôt sur le site Github:

 Maintenant, on ouvre le dossier Github, on va trouver un nouveau dossier nommé "test" qui est le clone de notre dépôt.
On l'ouvre et on y ajouter notre projet comme suit:


NB: On note la présence de deux fichiers: LICENSE et README.md qui ont été crée sur le site Github. Ceci dit, le dépôt sur Github doit suivre le clone téléchargé sur notre ordinateur et vice versa, sinon on doit faire plus de manipulations ... Je laisse ceci pour le prochain tutoriel.

Modifier le clone et l'uploader sur Github:


Le fait d'ajouter un fichier dans le dossier test (le clone sur notre ordinateur), git le prend comme une modification et toute modification doit être ajouté manuellement et commentée pour être prise en compte. Aussi, toute modification du contenu des fichiers est une modification prise par git.
Donc, après nos modifications, on va uploader notre clone et faire en sorte que le dépôt sur Github suit notre clone sur notre ordinateur. Pour le faire, on va passer à la terminale et faire ceci:

git add *
puis:
git commit -m "first upload"
puis:
git push -u origin master

Et ici on doit écrire notre pseudo et notre mot de passe de Github.

cette image illustre nos commandes: 


Retour à Github:


On voit maintenant que nos modifications ont été prises en comptes et que le dépôt sur Gihub suit son clone sur notre ordinateur.

Fin du tutoriel :-) .

Décryptage d’une commande “compliquée” sous Linux



Le shell est un outil très puissant, mais qui fait peur, parce qu’il parait souvent très compliqué. Aujourd’hui, je vous propose de faire un pas à pas pour comprendre comment tout ça fonctionne, pour ne plus avoir peur.

Histoire de voir à quoi nous avons affaire, voici sans plus de préambule la commande kifépeur :

wget -q -O - $pagelink | grep "\.mp4" | cut -d\" -f 4 | sed 's/1080p/720p/g'
J’ai pondu ça en cherchant à récupérer le lien direct des vidéos sur le site Jeuxvideo.com, puisqu’ils ne sont plus disponibles depuis la refonte du site (ils étaient à destination des Mac’eux, qui n’ont pas l’horreur Flash). $pagelink contient donc un lien vers une des pages du site, qui contient la vidéo convoitée, comme cette page par exemple.

  Rappel sur le pipe: non j’ai pas fait d’erreur, le pipe, c’est le nom qu’on donne au “|”. Son utilité, renvoyer le résultat d’une commande à une autre commande. Notre ligne d’exemple est ainsi un enchaînement de commandes qui chacune travaille avec le résultat de la précédente. Voyons donc chaque étape, en commençant par le début, celle du téléchargement de la page :

<div class="header-video">
<div itemscope itemtype="http://schema.org/Organization">
 <span itemprop="name" content="Jeuxvideo.com"></span>
</div>
<meta itemprop="videoFrameSize" content="mp4" />
<meta itemprop="description" content="la derniere fois que coeurdevandale et realmyop se sont retrouves devant tag 140961 mirror s edge il..." />
<meta itemprop="contentUrl" content="http://video1080.jeuxvideo.com/chroniques/s/p/speed-game-mirror-s-edge-2-144960-1439971518-1080p.mp4" />
<meta itemprop="duration" content="PT0H41M41S" />
<meta itemprop="videoQuality" content="1080p" />
<meta itemprop="encodingFormat" content="mpeg4" />
<meta itemprop="thumbnail" content="http://image.jeuxvideo.com/images/videos/chroniques-images/s/p/speed-game-mirror-s-edge-2-144960-1439971518-low.jpg" />
<meta itemprop="playerType" content="Flash" />
<meta itemprop="name" content="Speed Game - Mirror&#039;s Edge de retour, fini en 30:45" />
<div class="titre-video">
 <span>Chronique</span> Speed Game - Mirror&#039;s Edge de retour, fini en 30:45
 </div>
 <div class="foot-video">
  <div class="date-comm">
  <time datetime="2015-08-22T12:02">22/08/2015 à 12:02</time>
Ce résultat est ensuite envoyé à cette partie :

grep "\.mp4"
grep est un outil pour vous retourner les lignes d’un fichier (ou ici, du résultat du wget), ici on cherche les lignes dans lesquelles se trouve le “mot” “.mp4” :
<" meta itemprop="contentUrl" content="http://video1080.jeuxvideo.com/chroniques/s/p/speed-game-mirror-s-edge-2-144960-1439971518-1080p.mp4" />
Yes, une seule ligne ! On la passe ensuite à la moulinette de la partie suivante :
cut -d\" -f 4
cut est un utilitaire qui, comme son nom l’indique dans la langue de Shakespeare, découpe la chaîne qu’on lui donne en morceaux suivant un séparateur, ici le “, et on lui dit de renvoyer le f-ième morceau :
 http://video1080.jeuxvideo.com/chroniques/s/p/speed-game-mirror-s-edge-2-144960-1439971518-1080p.mp4
On approche du but, ceci dit comme j’ai pas un débit de malade, je ne cherche pas le lien de la vidéo en Full HD, mais en 720p. Par chance, il suffit de remplacer le 1080p au bout du lien par 720p, et c’est sed qui s’en charge :
 sed 's/1080p/720p/g' 

En gros, remplacer “1080p” par “720p”. Pourquoi mettre le “p” à la fin ? Pour éviter de remplacer aussi video1080 par video720 au début du lien, au risque de rencontrer des erreurs :

http://video1080.jeuxvideo.com/chroniques/s/p/speed-game-mirror-s-edge-2-144960-1439971518-720p.mp4

Et voilà, j’ai mon lien final :)

Pour l’histoire, j’utilise ce lien ensuite pour télécharger la vidéo avec wget, appelé soit seul soit avec trickle. Ça vous parle ? C’est normal, j’en ai parlé de l’article sur le contrôle de vitesse de téléchargement. Sinon, Jeuxvideo.com fait partie des sites supportés par youtube-dl, mais j’ai découvert ça après avoir codé mon truc.

Des possibilités infinies

On le voit, au final, on a mis bout à bout plusieurs outils qui ne font chacun qu’une seule chose, mais qui le font bien. Imaginez que les commandes sont des blocs Lego différents, et pensez (ou cherchez sur le Web) à toutes les créations plus hallucinantes les unes que les autres que sont capables de créer les gens qui jouent avec. C’est pareil, difficile de ne pas trouver une solution à un problème avec de telles possibilités de combinaison.

Par exemple, quand on a pas la possibilité d’avoir Fail2ban sous la main, chercher dans les logs de votre serveur Web les IPs les plus violentes en les classant par fréquence d’occurrence, et pourquoi pas bannir les 5 du groupe de tête, les plus agressives. En clair, une fois maîtrisées ces commandes “de base”, seule votre imagination vous bridera. Amusez-vous bien.

Source: seboss666

Powerline script pour révolutionner votre Bash terminal


L'apparence de ton Bash Terminal ne te plait pas ? Tu veux la changer ? Que dis-tu de Powerline-shell ? Vous voulez que votre Bash Terminal ressemble au miens ?

C'est simple. Pour appliquer ce changement tu dois faire comme suit :


  • Télécharger ce script python 
  • Puis déplacer le fichier téléchargé dans votre : /home/user_name
  • Puis il faut le rendre exécutable avec cette commande: 

chmod +x powerline-bash.py

  • Puis ouvrir le fichier Bashrc avec cette commande (J'utilise gedit, vous pouvre choisir l'éditeur texte de votre choix) : 


sudo ~/.bashrc

  • À la fin de votre fichier Bashrc faut ajouter ces lignes : 

function _update_ps1() {

export PS1="$(~/powerline-bash.py $?) "

}

export PROMPT_COMMAND="_update_ps1"


Et voilà ! Ouvre à nouveau votre Bash Terminal et amuse-toi !
Pour plus d'informations : Powerline-shell 

[Gnu/Linux] Quelques lignes de commande utiles




  • Opérations sur les dossiers : 
    pwd              Afficher le répertoire courant
    cd dir            Changer le répertoire courant vers le répertoire "dir"
    cd                Aller vers le dossier "home"
    cd ..              Ouvrir répertoire parent
    cd -               Ouvrir répertoire précédent
    cd .               Ouvrir répertoire courant
    mkdir dir      Créer un nouveau répertoire nommé "dir"
    rmdir            Supprimer le répertoire "dir"
    ls dir             Lister le contenu du répertoire "dir"
    ls -a              Lister le contenu du répertoire (les dossiers cachés sont inclus)
    ls -l               Lister le contenu du répertoire en format longue (plus de détails)
    ls -t               Lister le contenu du répertoire en fonction du temps de création du contenu
    ls -S              Lister le contenu du répertoire en fonction de la taille de son contenu
    ls -r               Lister le contenu du répertoire en renversant l'ordre
    ls -R              Lister le contenu du répertoire d'une manière récursive


  • Opérations sur les fichiers :   
     touch file                Création d'un nouveau fichier vide nommé "file"
     cp file1 file2           Copier le contenu du "file1" dans "file2"
     mv file1 file2          Copier "file1" et le renommer en "file2"
     rm file                     Supprimer "file"
     cat file                    Afficher le contenu du "file"
     cat file1 file2         Concaténer "file1" et "file2"
     less file                  Afficher le contenu du "file" petit à petit. "q" pour quitter
     head file                Afficher les 10 premières lignes du fichier "file"
     tail file                  Afficher les 10 dernières lignes du fichier "file"
     tail -n 5 file           Afficher les 5 dernières lignes du fichier "file"
     taile -f file             Afficher les 10 dernières lignes avec mise à jour continue d'affichage


  • Aide (help) :  
     man cmd               Afficher le manuel de la commande "cmd"
     man -k word          Rechercher dans le manuel du mot "word"
     -h                           Option "-h" affiche l'aide de la commande


  • Recherche des fichiers : 
     grep pattern file           Recherche des lignes avec la méthode "pattern" dans les dossier et fichiers
     grep -v file                   Inverser la recherche
     grep -r  file                   Recherche récursive
     grep -e patt -e patt  file   Recherche méthodique multiples "patt"
     locate file                      Recherche rapide d'un fichier
     wich cmd                      Rechercher l'endroit  binaire dans l'OS de la commande "cmd"
     find dir -name pattern   Recherche le répertoire "dir" avec une méthode "pattern".
                   Exemple : find photos -name photos
   

  • Les standards IO Streams :  
     stdin                   Données entrées en lignes de commande
     stdout                 Données de sortie affichées dans l'écran
     stderr                  Erreurs de sortie affichées dans l'écran
     echo string         Afficher "string" dans l'écran
   

  • Redirections 
     cmd > file          Mettre la sortie de la commande "cmd" dans "file"
     cmd < file         "File" est utilisé comme donnée d'entrée à la commande "cmd"
     cmd >> file       Ajouter la sortie de la commande "cmd" au fichier "file"
     cmd 2> file       Écrire les erreurs de sortie dans "file"
     cmd &> file      Écrire les erreurs et la sortie de la commande "cmd" dans "file"


  • Les Pipes et les commandes multiples : 
     cmd1 | cmd2    Les données de sortie de la commande "cmd1" sont utilisés comme entrées dans la commande "cmd2"
     cmd1 | &cmd2   Stderr de la commande "cmd1" sont utilisées comme données d'entrée de la commande "cmd2"

     cmdPart1 \
     cmdPart2     Continuer la commande dans dans la ligne suivante

     cmd1; cmd2    Exécuter "cmd1" puis "cmd2"


  • Processus : 

      ps     Afficher les processus de l'utilisateur
      ps -e    Afficher tous les processus
      ps -fA    Afficher tous les processus en détails
      top        Afficher les processus en temps réel
      cmd &    Exécuter la commande "cmd" en arrière plan
      Ctrl + C    Stopper (tuer) le processus en action
      Ctrl + Z    Suspendre le processus en action
      bg             Placer le processus suspendu en arrière plan
      fg             Amener le processus en arrière plan au premier plan d'exécution
      kill Pid     Tuer un processus par son ID Pid
      kill -9 Pid     Tuer un processus (d'une manière forte) par son ID Pid



  • Opérations sur les fichiers texte : 

     wc file      Compter les lignes, les mots et les caractères du fichier "file"
     sort file     Classer "file" ligne par ligne
     sed 's/abc/def/g' file    Remplacer les occurrences de "abc" par "def" dans le fichier "file"
 


Pour de commandes, veuillez consulter : Bash Commands

ShellShock nouvelle vulnérabilité du Bash


ShellShock ? C'est quoi ? Et comment savoir si mes systèmes sont affectés ? 

Récemment, une nouvelle vulnérabilité a été trouvé qui a le potentiel d'affecter les distributions Gnu/Linux, Mac OS X et UNIX OS. La première découverte date du 24 Septembre 2014 et elle a été nommé "Bash Bug" ou "ShellShock", Le "Gnu Bash Remote Code Execution Vulnerability" (CVE-2014-6271 et CVE-2014-7169) peuvent donner aux Hackers le contrôle des données et du réseau du système infecté par ce bug.
La vulnérabilité affecte seulement le "Bash Shell" qui est un interpréteur de langage de commande. Elle permet au Hacker d'attacher des codes malicieux aux variables environnementaux qui affectent à leur tour les processus tournant sur un ordinateur.

Un test et des patchs ont été crée par la communauté Gnu/Linux pour éliminer ce bug de leur distributions.

Le test consiste à exécuter ces codes sur votre Bash terminale :

  Exploit 1 : CVE-2014-6271 :
     
~$ env x='() { :;}; echo Vulnérable' bash -c "echo c\'est un test"

    Si vous voyez Vulnérable alors vous devez appliquer le patch à votre Bash. Sinon vous n'êtes pas affecté par ShellShock.

  Exploit 2 : CVE-2014-7169 :
  
~$ env X='() { (shellshocker.net)=>\' bash -c "echo date"; 
cat echo; rm ./echo

 Si vous aurez des erreurs et non pas la date, votre système est infecté et vous devez appliquer le patch.

 Exploit 3 : 

~$  env X=' () { }; echo Vulnérable' bash -c 'date'

 Si le résultat est Vulnérable, votre système est infecté et vous devez appliquer le patch à votre système.

 Exploit 4 : CVE-2014-7186 :

~$  bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF 
<<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnérable,
 redir_stack"
Si votre système est vulnérable vous aurez comme résultat : CVE-2014-7186 vulnérable, redir_stack.

 Exploit 5 : CVE-2014-7187 :

~$  (for x in {1..200} ; do echo "for x$x in ; do :"; done; 
for x in {1..200} ; do echo done ; done) | bash ||
 echo "CVE-2014-7187 vulnérable, word_lineno"

Si votre système est vulnérable vous aurez comme résultat : CVE-2014-7187 vulnérable, word_lineno.

Exploit 6 : CVE-2014-6278
 
~$ shellshocker='() { echo Vous êtes vulnérable; }' 
bash -c shellshocker

Si votre système est vulnérable vous aurez comme résultat : Vous êtes vulnérable. Sinon une erreur.


Pour détourner ce Bug et sécuriser votre Bash, veuillez appliquer la mise à jour de votre Bash comme suit : 

 Pour Suse, OpenSuse et leur dérivées : 
 
~$ yum update bash -y

 Pour Ubuntu et ses dérivées : 


~$  apt-get update; apt-get install --only-upgrade bash



Pour Arch Linux et ses dérivées : 

 
~$ pacman -Syu



Pour plus de détails, veuillez visiter le site officiel de ShellShock.