#1 Le 17/10/2016, à 13:17
- SimonLefort
Script au démarrage qui se lance plusieurs fois ?
Bonjour,
J'essaye de faire un script qui démarre une connexion 3G sur une carte embarquée.
Le script fonctionne quand je le lance manuellement. Quand je le lance automatiquement, je récupère parfois une adresse IP mais la configuration dhcp ne tient pas. (Elle tient 1 ou 2 minutes...)
J'ai l'impression que la commande "dhclient eth0" se lance plusieurs fois. (je la vois deux fois quand j'utilise "ps aux | grep dhclient"). J'ai supprimé "network-manager" parce que je le soupçonnais de mettre le bazard mais ça n'a pas réglé le problème...
Auriez-vous des pistes pour avancer ?
Est-ce que les "sleep" peuvent poser un problème ?
Uname:
$ uname -a
Linux percepto1 3.10.40+ #84 SMP PREEMPT Thu Aug 4 13:09:36 IDT 2016 armv7l armv7l armv7l GNU/Linux
Le script:
~$ cat /home/admin/scripts/connect_LTE.sh
#!/bin/bash
#connecter la carte 3G
echo 166 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio166/direction
sleep 0.5
echo 1 > /sys/class/gpio/gpio166/value
sleep 10
#vérifier si la partie précédente a bien fonctionné:
test -e /sys/class/gpio/gpio166/value
if [ $? == 0 ]
then
cd /home/admin/LTETools/
./pcmarm ./slqssdk 0 &
sleep 10
dhclient eth0 &
else
echo "Il faut lancer le script avec \"sudo\" devant."
fi
Le script dans /etc/init/ :
~$ cat /etc/init.d/connect_LTE
#! /bin/sh
### BEGIN INIT INFO
# Provides: LTE Connexion
# Required-Start: $local_fs $syslog $network
# Required-Stop: $local_fs $syslog $network
# Should-Start: $portmap
# Should-Stop: $portmap
# X-Start-Before: nis
# X-Stop-After: nis
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Init LTE Network
# Description: Fichier d'init pour lancer le réseau LTE au boot
### END INIT INFO
PATH=/bin:/usr/bin:/sbin:/usr/sbin
bash /home/admin/scripts/connect_LTE.sh
On lance update-rc.d :
~$ sudo update-rc.d connect_LTE defaults
Adding system startup for /etc/init.d/connect_LTE ...
/etc/rc0.d/K20connect_LTE -> ../init.d/connect_LTE
/etc/rc1.d/K20connect_LTE -> ../init.d/connect_LTE
/etc/rc6.d/K20connect_LTE -> ../init.d/connect_LTE
/etc/rc2.d/S20connect_LTE -> ../init.d/connect_LTE
/etc/rc3.d/S20connect_LTE -> ../init.d/connect_LTE
/etc/rc4.d/S20connect_LTE -> ../init.d/connect_LTE
/etc/rc5.d/S20connect_LTE -> ../init.d/connect_LTE
Dernière modification par SimonLefort (Le 17/10/2016, à 13:20)
Hors ligne
#2 Le 17/10/2016, à 15:06
- SimonLefort
Re : Script au démarrage qui se lance plusieurs fois ?
Quelques compléments d'informations :
Quand je boote, je n'ai pas encore le réseau mais "dhclient" tourne :
~$ ps aux | grep dhc
root 1824 0.0 0.1 3940 2828 ? S 01:00 0:00 dhclient eth0
root 2149 0.2 0.0 2456 1328 ? S 01:00 0:00 /bin/bash /sbin/dhclient-script
root 2158 0.0 0.0 1292 436 ? S 01:00 0:00 run-parts --arg=-a --arg=eth0.dhclient /etc/resolvconf/update.d
admin 2219 0.0 0.0 3748 664 pts/7 S+ 01:01 0:00 grep --color=auto dhc
Je récupère une IP :
~$ ifconfig
eth0 Link encap:Ethernet HWaddr c2:5c:ad:21:4b:08
inet addr:100.xxx.yyy.zzz Bcast:100.xxx.yyy.zzz Mask:255.255.255.248
inet6 addr: fe80::c05c:adff:fe21:4b08/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1430 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:68 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:948 (948.0 B) TX bytes:11582 (11.5 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:464 errors:0 dropped:0 overruns:0 frame:0
TX packets:464 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:36784 (36.7 KB) TX bytes:36784 (36.7 KB)
usb0 Link encap:Ethernet HWaddr ee:69:58:25:30:f9
inet addr:10.0.0.2 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Pendant que j'ai le réseau, je vois toujours un "dhclient" qui tourne :
~$ ps aux | grep dhc
root 2227 0.0 0.0 3940 1880 ? Ss 01:01 0:00 dhclient eth0
admin 2278 0.0 0.0 3744 664 pts/10 S+ 01:01 0:00 grep --color=auto dhc
Et je perds le réseau à un moment, sans raison apparente :
~$ ping google.com
PING google.com (172.217.17.46) 56(84) bytes of data.
64 bytes from ams16s29-in-f14.1e100.net (172.217.17.46): icmp_seq=71 ttl=50 time=40.4 ms
(...)
ping: sendmsg: Network is unreachable
(...)
Après avoir perdu le réseau, j'ai deux instances de "dhclient":
~$ ps aux | grep dhc
root 2227 0.0 0.1 3940 2008 ? Ss 01:01 0:00 dhclient eth0
root 2505 0.0 0.1 4068 2828 ? S 01:02 0:00 dhclient eth0
admin 2616 0.0 0.0 3744 664 pts/10 S+ 01:04 0:00 grep --color=auto dhc
Hors ligne
#3 Le 17/10/2016, à 15:13
- jplemoine
Re : Script au démarrage qui se lance plusieurs fois ?
Je vais peut-être (surement) dire une bêtise mais je pense qu'il y a un problème :
~$ sudo update-rc.d connect_LTE defaults
De mémoire, ça le lance avec le runlevel 1 et 2 (et donc 2 fois).
Il ne faut le faire que sur un seul des 2 runlevels.
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
#4 Le 17/10/2016, à 15:36
- SimonLefort
Re : Script au démarrage qui se lance plusieurs fois ?
J'ai modifié mon script dans /etc/init.d/ :
~$ sudo vim /etc/init.d/connect_LTE
(...)
# Default-Start: 2
# Default-Stop: 0 1
(...)
J'ai supprimé les anciens liens dans /etc/rc*.d/ :
~$ sudo update-rc.d -f connect_LTE remove
Et j'ai recréé des liens avec les bons (je crois) runlevel :
~$ sudo update-rc.d connect_LTE start 20 2 . stop 80 0 1 .
(source)
Je teste et je viens éditer en fonction du résultat.
[Edit: Ça ne marche pas, j'ai le même problème qu'avant! Je récupère une adresse IP, j'ai du réseau, ... et puis un deuxième "dhclient eth0" est lancé (par quoi?) et je perds la configuratoin dhcp. :'-(
Dernière modification par SimonLefort (Le 17/10/2016, à 16:02)
Hors ligne