Le Forum francophone communautaire des utilisateurs de Kali linux

Développement => Vos créations => Discussion démarrée par: coyotus le 14 octobre 2016 à 17:27:28

Titre: Script de mise à jour multiversion.
Posté par: coyotus le 14 octobre 2016 à 17:27:28
Avec les versions V1, V2, sana, moto & rolling difficile de suivre entre les changements de dépôts et les versions, alors pour simplifier la chose, j'ai vite écris ce script qui mettra à jour les dépôts des anciennes versions, sans devoir aller vérifier les dépôts sur la doc officielle.

Il s'agit d'une version à améliorer, je suis ouvert à tout retour et idée pour l'améliorer.

#!/bin/bash
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
#Kali rolling updater

red='\e[0;31m'
NC='\e[0m'
yellow='\e[0;33m'

if ping -c 1 8.8.8.8 > /dev/null 2>&1
  then
    echo "[*]Internet connection OK ..."
    if [ "$(whoami)" != root ]
      then
        echo -e "$red Error:$NC $yellow You must be root for running this script ! $NC"
      exit 1
   fi
else
  echo "You are not connected to the Internet. Check your connection"
  exit 1
fi

if [ "$(lsb_release -is)" != Kali ]
then
    echo -e "$red Error:$NC $yellow Sript only available for Kali Linux ! $NC"
    exit 1
fi

if grep -q rolling /etc/apt/sources.list
then
    mv /etc/apt/sources.list /etc/apt/sources.list.bak
    echo "deb http://http.kali.org/kali kali-rolling main contrib non-free" > /etc/apt/sources.list
    echo -n "updating..."
    apt-get -qq update && apt-get dist-upgrade
else
    case "$(lsb_release -cs)" in
       "sana"|"moto")
         mv /etc/apt/sources.list /etc/apt/sources.list.bak
         echo "deb http://old.kali.org/kali $(lsb_release -cs) main non-free contrib" > /etc/apt/sources.list
         echo -n "updating..."
         apt-get -qq update && apt-get dist-upgrade
      ;;
       *)
         echo -e "$red Error:$NC $yellow Script only available for Kali Linux ! $NC"
         echo "aborting..."
         exit 1
     ;;
    esac
fi
Titre: Re : Script de mise à jour multiversion.
Posté par: Koala le 14 octobre 2016 à 20:31:49
Merci pour le partage  :)


Concernant le script, c'est pas moi qui vais pouvoir donner un avis avisé ou l'améliorer vu mes maigres connaissances en prog, je code vite fait pour automatiser des taches mais le mot coder et a prendre avec des pincettes  :)
Titre: Re : Re : Script de mise à jour multiversion.
Posté par: coyotus le 14 octobre 2016 à 20:38:13
je code vite fait pour automatiser des taches mais le mot coder et a prendre avec des pincettes  :)
On commence tous comme ça puis on se retrouve à coder tout et n'importe quoi, puis à recoder tout ses anciens scripts et pour finir on se débrouille pas mal :)
Titre: Re : Script de mise à jour multiversion.
Posté par: Koala le 14 octobre 2016 à 21:01:55
Pas faux   ;)
Titre: Re : Script de mise à jour multiversion.
Posté par: kcdtv le 17 octobre 2016 à 13:14:09
Peut être qu'une petite boucle de vérification privilèges et connexion en début de script ne serait pas de trop...
par example
if ping -c 1 google.com ;
  then
    if [ "$whoami" != "root" ] ;
      then
        echo "You do not have root privileges. Launch the script again with sudo or from a root session "
        exit 1
     fi
else
  echo "You are not connected to the Internet. Check your connection"
  exit 1
fi
Pareil que koala, je joue aux légo, je ne suis pas programmeur  :D
il faudrait que je me mettes sérieusment à python un jour... (ça fait 5 ans que je dis ça  ;D )
La fonction de vérification c'est application du principe que quelqu'un qui sait m'a dit d'appliquer : Never trust the user.
Merci pour le partage  ;)

Titre: Re : Script de mise à jour multiversion.
Posté par: Koala le 17 octobre 2016 à 13:57:57
Idem va falloir que je m'y mette  8) mais entre le dire et le faire...  ;D

Sinon tu peux aussi check les droits comme ça: (j'utilise ce morceau de code dans un script bash destiné aux rogue ap avec airbase et hostapd et compagnie qui sera dispo bientot normalement)
Citer
if [ "$(id -u)" != "0" ]; then
   echo -e "\e[1;31m[!]\e[0m Desole mais ce script a besoin des droits d'admin" 1>&2
   exit 1
else
   clean=1
   f_menu
fi
Titre: Re : Script de mise à jour multiversion.
Posté par: coyotus le 17 octobre 2016 à 17:15:26
J'ai mis le script à jour avec vos remarques, bien que je pense que généralement les utilisateurs de Kali sont root et savent si ils sont connecté lol.
Titre: Re : Script de mise à jour multiversion.
Posté par: Koala le 17 octobre 2016 à 20:10:22
J'admets  ;D
Titre: Re : Script de mise à jour multiversion.
Posté par: kcdtv le 18 octobre 2016 à 10:03:05
  Le Monsieur te dis: In user we DON'T trust!  ;D
La loi de murphy: Si il y a une "connerie" à faire, une erreur à commettre, même basique est évidente,  ne cherches pas, quelqu'un la fera.
  Je t'en parle en connaissance de cause: J'ai réussis à effacer mon propre système d'exploitation  avec dd en voulant monter une live de Kali.
J'ai fais une espèce de gros sudo rm -rf /* à moi même,  banzaiiiiiiiiiiiiiiiiiiiiiii
Le truc qui fait rire mais sur le moment pas trop  :D
Titre: Re : Script de mise à jour multiversion.
Posté par: Colibri le 27 novembre 2016 à 03:36:44
Merci beaucoup, marche parfaitement et moi qui commence à apprendre le bash ça m'aide à voir des possibilités ^^.
Titre: Re : Script de mise à jour multiversion.
Posté par: lobo1512 le 31 décembre 2017 à 15:31:53
Bonjours.
Avec mes faibles connaissances en bash, je me demande pourquoi ceci fonctionnerai à chaque nouvelles versions :
if grep -q rolling /etc/apt/sources.list
then
    mv /etc/apt/sources.list /etc/apt/sources.list.bak
    echo "deb http://http.kali.org/kali kali-rolling main contrib non-free" > /etc/apt/sources.list
    echo -n "updating..."
    apt-get -qq update && apt-get dist-upgrade
else
    case "$(lsb_release -cs)" in
       "sana"|"moto")
         mv /etc/apt/sources.list /etc/apt/sources.list.bak
         echo "deb http://old.kali.org/kali $(lsb_release -cs) main non-free contrib" > /etc/apt/sources.list
         echo -n "updating..."
         apt-get -qq update && apt-get dist-upgrade

Car lorsque kali va up de version le dépôt de rolling va changer d'adresse :
kali.org... > old.kali.org...
Du coup le script ne fonctionnera plus.

Je ne penses pas être capable de le coder mais peut-être pour un script qui serait fonctionnel même dans le cas d'une nouvelle version, il faudrait que le script aille chercher sur le web le nom de la dernière version mise en ligne.
A tout hasard et je dis certainement une bêtise mais c'est juste pour essayer de donner une piste, peut être un grep couplé avec un wget qui ne récupèrerait que le nom du fichier de la dernière release ???
Titre: Re : Script de mise à jour multiversion.
Posté par: _john_doe le 31 décembre 2017 à 16:20:28
if grep -q rolling /etc/apt/sources.list
then
    mv /etc/apt/sources.list /etc/apt/sources.list.bak
    echo "deb http://http.kali.org/kali kali-rolling main contrib non-free" > /etc/apt/sources.list
    echo -n "updating..."
    apt-get -qq update && apt-get dist-upgrade
Ce bout de code verifie que dans ton sources.list il est fait mention de rolling (qui est TOUJOURS (voila la subtilité) la derniere version actuelle de Kali).
Si oui il crée une sauvegarde de ton sources.list actuel (bak) et renseigne le fichier sources.list avec le lien officiel (deb http://http.kali.org/kali kali-rolling main contrib non-free).
Ensuite il fait un update et un full upgrade via ces dépots.

else
    case "$(lsb_release -cs)" in
       "sana"|"moto")
         mv /etc/apt/sources.list /etc/apt/sources.list.bak
         echo "deb http://old.kali.org/kali $(lsb_release -cs) main non-free contrib" > /etc/apt/sources.list
         echo -n "updating..."
         apt-get -qq update && apt-get dist-upgrade
On tombe sur ce code si le grep ne nous a pas retourné rolling passé en argument (ce qui signifie donc que dans notre sources.list nous ne pointons pas sur la derniere version de kali.
On verifie d'abord la version de kali (sana)
Puis on fait la meme chose que precedamment sauf que l'on renseigne les sources.list de sana.

Donc pour repondre a ta question tu trouveras toujours en ROLLING les derniers depots à jour donc cette maj fonctionnera car ROLLING ne sera jamais déprécié.
C'est un changement majeur depuis la version sana, en fait il n'y plus de releases de kali (sana & co) mais un ROLLING qui signifie MAJ permanente.
Encore un peu de lecture :  :)
https://www.kali.org/news/kali-linux-rolling-edition-2016-1/ (https://www.kali.org/news/kali-linux-rolling-edition-2016-1/)

Je laisse completer Coyotus car si je me souviens bien ce script etait de lui.
Titre: Re : Re : Script de mise à jour multiversion.
Posté par: lobo1512 le 31 décembre 2017 à 16:47:03
(qui est TOUJOURS (voila la subtilité) la derniere version actuelle de Kali).
Merci, je comprend mieux le pourquoi du comment, j'étais justement en train de chercher comment récupérer le nom de la dernière release pour en faire un paramètre afin de proposer quelque chose de probant, du coup j'arrête mes recherches. Quoique il y aurait peut-être des applications possibles pour d'autres distri.

Je découvre à peine Kali et je trouve cette distri vraiment intéressante, pas seulement pour l'apprentissage de la sécurité informatique, mais également sur ses particularités, la façon dont elle est développé et supporté... Faire un nom permanent de release pour la dernière version mise en ligne c'est plutôt surprenant quand on le découvre !
Titre: Re : Re : Re : Script de mise à jour multiversion.
Posté par: coyotus le 01 janvier 2018 à 19:08:44
j'étais justement en train de chercher comment récupérer le nom de la dernière release pour en faire un paramètre afin de proposer quelque chose de probant, du coup j'arrête mes recherches. Quoique il y aurait peut-être des applications possibles pour d'autres distri.
lsb_release -cs ou grep -i version /etc/os-release et tu filtre avec awk
Titre: Re : Re : Re : Re : Script de mise à jour multiversion.
Posté par: lobo1512 le 01 janvier 2018 à 21:50:37
j'étais justement en train de chercher comment récupérer le nom de la dernière release pour en faire un paramètre afin de proposer quelque chose de probant, du coup j'arrête mes recherches. Quoique il y aurait peut-être des applications possibles pour d'autres distri.
lsb_release -cs ou grep -i version /etc/os-release et tu filtre avec awk
Merci, mais ceci me donne la release installé sur la machine sur laquelle je lance la commande. Je me suis mal exprimé, ce que je cherchais à faire c'est récupérer sur le net le nom de la dernière release disponible et d'en faire un parramètre, par exemple pour faire un truc du genre :
if
         lsb_release -cs =! $le_parrametre_dernière_release_dispo
do
         quelque_chose