Intégrer un script récupéré dans le mien


#1

Hello à toutes et à tous.
J’ai récupéré ce script sur ce site :

#!/bin/bash

login='fti/abcdefg'
pass='hijklmn'

tohex() {
  for h in $(echo $1 | sed "s/\(.\)/\1 /g"); do printf %02x \'$h; done
}

addsep() {
  echo $(echo $1 | sed "s/\(.\)\(.\)/:\1\2/g")
}

r=$(dd if=/dev/urandom bs=1k count=1 2>&1 | md5sum | cut -c1-16)
id=${r:0:1}
h=3C12$(tohex ${r})0313$(tohex ${id})$(echo -n ${id}${pass}${r} | md5sum | cut -c1-32)

echo 00:00:00:00:00:00:00:00:00:00:00:1A:09:00:00:05:58:01:03:41:01:0D$(addsep $(tohex ${login})${h})

J’essaie de l’intégré dans mon script mais également en tenant compte de certains paramètres ( le salt et le byte) issu de générateur

Voici mon script fini :

#!/bin/bash
sudo python /diagbox/web/scripts/gpio/led_32_on.py

#Variables
readonly dhclient_files=/diagbox/web/tmp/dhclient.conf
readonly dhclient_def=/etc/dhcp/dhclient.conf

readonly error_log=/diagbox/web/tmp/error.log

readonly iptables_rescue=/etc/iptables.ipv4.nat.backup_rescue
readonly iptables_normal=/etc/iptables.ipv4.nat
readonly iptables_diagbox=/etc/iptables.ipv4.nat.backup_diagbox

readonly interfaces_rescue=/etc/network/interfaces_RESCUE
readonly interfaces_normal=/etc/network/interfaces
readonly interfaces_dhcp=/etc/network/interfaces_DHCP

readonly dhcpleases=/var/lib/dhcp/dhclient.orange.leases

#Effacer les fichier tempo si presents
if [ -f $error_log ];then
	echo "Le log error existe déjà";
	sudo rm $error_log
fi



if [ -f $dhclient_files ];then
	echo "Le fichier de configuration existe !";
	if sudo rm $dhclient_files; then
		echo "fichier dhclient efface"	
	else
		echo "Echec suppression tempo dhclient deja existant" >> $error_log
		sudo python /diagbox/web/scripts/gpio/led_32_off.py
		exit
	fi
fi

#leases dhcp
if [ -f $dhcpleases ];then
	echo "Le fichier de configuration existe !";
	if sudo rm $dhcpleases; then
		echo "fichier dhclient leases"
	else
		echo "Echec suppression dhcp leases" >> $error_log
		sudo python /diagbox/web/scripts/gpio/led_32_off.py
		exit
	fi
fi

if sudo touch $dhcpleases; then
	echo "creation leases dhcp ok"
else
	echo "Echec creation leases dhcp" >> $error_log
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi

#modprobe
if sudo modprobe 8021q; then
	echo "modprobe 8021q"
else
	echo "Echec modprobe 8021q" >> $error_log
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi

#Modification interfaces eth0

if sudo cp $interfaces_rescue $interfaces_normal; then
	echo 'configuration interfaces modifié';
else
	echo "Echec modification configuration ethO" >> $error_log
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi


#fti conversion
login=$2
pass=$3
AUTHSTRING=00:00:00:00:00:00:00:00:00:00:00:1A:09:00:00:05:58:01:03:41:01:0D

tohex() {
  for h in $(echo $1 | sed "s/\(.\)/\1 /g"); do printf %02x \'$h; done
}

addsep() {
  echo $(echo $1 | sed "s/\(.\)\(.\)/:\1\2/g")
}

r=$(dd if=/dev/urandom bs=1k count=1 2>&1 | md5sum | cut -c1-16)
id=1234567890123456
h=3C12$(tohex ${r})0313$(tohex ${id})$(echo -n ${id}${pass}${r} | md5sum | cut -c1-32)

AUTHSTRING=${AUTHSTRING}$(addsep $(tohex ${login})${h})
echo ${AUTHSTRING}

#Fichier dhclient
#Ecriture
if echo 'option rfc3118-authentication code 90 = string;' >> $dhclient_files; then
	echo "ok"
else
	echo "Echec écriture fichier dhclient partie 1" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi

if echo "interface \"orange\" {" >> $dhclient_files; then
	echo "ok"
else
	"Echec écriture fichier dhclient partie 2" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi


if echo "send vendor-class-identifier \"sagem\";" >> $dhclient_files; then
	echo "ok"
else
	"Echec écriture fichier dhclient partie 3" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi


if echo "send user-class \"+FSVDSL_livebox.Internet.softathome.Livebox3\";" >> $dhclient_files; then
	echo "ok"
else
	"Echec écriture fichier dhclient partie 4" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi


if echo "send rfc3118-authentication ${AUTHSTRING} ;" >> $dhclient_files; then
	echo "ok"
else
	"Echec écriture fichier dhclient partie 5" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi

if echo 'request subnet-mask, routers,' >> $dhclient_files; then
	echo "ok"
else
	"Echec écriture fichier dhclient partie 6" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi


if echo 'domain-name, broadcast-address, dhcp-lease-time,' >> $dhclient_files; then
	echo "ok"
else
	"Echec écriture fichier dhclient partie 7" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi


if echo 'dhcp-renewal-time, dhcp-rebinding-time,' >> $dhclient_files; then
	echo "ok"
else
	"Echec écriture fichier dhclient partie 8" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi


if echo 'rfc3118-authentication;' >> $dhclient_files; then
	echo "ok"
else
	"Echec écriture fichier dhclient partie 9" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi


if echo 'supersede domain-name-servers 8.8.8.8, 8.8.4.4;' >> $dhclient_files; then
	echo "ok"
else
	"Echec écriture fichier dhclient partie 10" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi


if echo '}' >> $dhclient_files; then
	echo "ok"
else
	"Echec écriture fichier dhclient partie 11" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi


#Deplacement 
if [ -f $dhclient_def ];then
	echo "Le fichier de configuration existe !";
	if sudo rm $dhclient_def; then
		echo "fichier dhclient efface"	
	else
		echo "Echec suppression dhclient deja existant" >> $error_log
		#retour interfaces en dhcp
		sudo cp $interfaces_dhcp $interfaces_normal
		#retour iptables
		sudo cp $iptables_diagbox $iptables_normal
		sudo python /diagbox/web/scripts/gpio/led_32_off.py
		exit
		fi
fi

if sudo cp $dhclient_files $dhclient_def; then
	echo 'fichier dhclient modifie';
else
	echo "Echec déplacement fichier dhclient" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi

#iptables
if	sudo iptables -t mangle -I POSTROUTING -o orange -j CLASSIFY --set-class 0:1; then
	echo "sudo iptables -t mangle -I POSTROUTING -o orange -j CLASSIFY --set-class 0:1 ok"
else
	echo "echec sudo iptables -t mangle -I POSTROUTING -o orange -j CLASSIFY --set-class 0:1" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi

if sudo cp $iptables_rescue $iptables_normal; then
	echo 'fichier iptables modifié';
else
	echo "Echec déplacement fichier iptables" >> $error_log
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi

sudo iptables-restore < /etc/iptables.ipv4.nat

#Relancer la machine
if sudo ifup -a;then
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	sudo python /diagbox/web/scripts/gpio/led_22_off.py
	sudo python /diagbox/web/scripts/gpio/led_24_off.py
	sudo python /diagbox/web/scripts/gpio/led_26_on.py
	echo "ifup ok"
else
	echo "Echec ifup ok"
	#retour interfaces en dhcp
	sudo cp $interfaces_dhcp $interfaces_normal
	#retour iptables
	sudo cp $iptables_diagbox $iptables_normal
	sudo python /diagbox/web/scripts/gpio/led_32_off.py
	exit
fi

Ai-je bien intégré le script voulu dans le mien ou ai-je fait des erreurs?

En vous remerciant par avance :slight_smile:

Doudou Tiana


#2

Hello à toutes et à tous.
J’ai trouvé où se situer le problème mais je ne sais comment le résoudre.

J’ai isolé ce bout de code :

 #!/bin/bash
    login='fti/AAAA'
    pass='BBBB'

    tohex() {
      for h in $(echo $1 | sed "s/\(.\)/\1 /g"); do printf %02x \'$h; done
    }

    addsep() {
      echo $(echo $1 | sed "s/\(.\)\(.\)/:\1\2/g")
    }

    r=$(dd if=/dev/urandom bs=1k count=1 2>&1 | md5sum | cut -c1-16)
    id=${r:0:1}
    h=3C12$(tohex ${r})0313$(tohex ${id})$(echo -n ${id}${pass}${r} | md5sum | cut -c1-32)

    echo 00:00:00:00:00:00:00:00:00:00:00:1A:09:00:00:05:58:01:03:41:01:0D$(addsep $(tohex ${login})${h})

Alors quand je lance le script avec les valeurs login et pass directement mises dans le scripts, ça passe.

Par contre quand j’essaie de passer par des paramètres : bash MONSCRIPTS AAAA BBBB

  #!/bin/bash
        login="'fti/$1'"
        pass="'$2'"

        tohex() {
          for h in $(echo $1 | sed "s/\(.\)/\1 /g"); do printf %02x \'$h; done
        }

        addsep() {
          echo $(echo $1 | sed "s/\(.\)\(.\)/:\1\2/g")
        }

        r=$(dd if=/dev/urandom bs=1k count=1 2>&1 | md5sum | cut -c1-16)
        id=${r:0:1}
        h=3C12$(tohex ${r})0313$(tohex ${id})$(echo -n ${id}${pass}${r} | md5sum | cut -c1-32)

        echo 00:00:00:00:00:00:00:00:00:00:00:1A:09:00:00:05:58:01:03:41:01:0D$(addsep $(tohex ${login})${h})

Ca ne passe pas.

J’ai essayé également de faire : bash MONSCRIPTS “‘fti/AAAA’” "‘BBBB’"

#!/bin/bash
            login=$1
            pass=2

            tohex() {
              for h in $(echo $1 | sed "s/\(.\)/\1 /g"); do printf %02x \'$h; done
            }

            addsep() {
              echo $(echo $1 | sed "s/\(.\)\(.\)/:\1\2/g")
            }

            r=$(dd if=/dev/urandom bs=1k count=1 2>&1 | md5sum | cut -c1-16)
            id=${r:0:1}
            h=3C12$(tohex ${r})0313$(tohex ${id})$(echo -n ${id}${pass}${r} | md5sum | cut -c1-32)

            echo 00:00:00:00:00:00:00:00:00:00:00:1A:09:00:00:05:58:01:03:41:01:0D$(addsep $(tohex ${login})${h})

Si quelqu’un a une idée :slight_smile: :slight_smile:
Merci par avance.


#3

Il faut faire

login="$1"
pass="$2"

Si tu mets des quotes simples (’) bash ne vas pas interpréter les variables. Les doubles quotes permettent de parer à certains désagréments, par exemple si l’argument contient des espaces.
Et tu fais juste
bash MONSCRIPT "fti/AAA" "BBB"