Contrôle de connexion à un serveur via script Bash (Curl ou RTMPDUMP)
Bonsoir à tous,
Je suis désolé de poster ici mais je n'ai pas trouvé un autre forum pouvant correspondre à mon problème.
J'ai installé sur Ubuntu 18.04 un serveur Nginx avec un module serveur RTMP qui fonctionne parfaitement. Je diffuse de la vidéo sur ce serveur et mes 2 autres clients se connecte via VLC sans problème.
Je souhaiterais faire un test régulier via un script batch pour couper VLC et lancer la lecture d'une video en local sur le client en cas de serveur indisponible.
J'ai effectué des recherches et ai trouvé différents scripts que j'ai essayé de reproduire sans succès.
Voici le premier script que j'ai réalisé :
Code:
1 2 3 4 5 6
| if [[ `curl --connect-timeout 3 --output /dev/null --silent --head --fail rtmp://127.0.0.1/mytv/test 2>&1` ]]
then
echo "failing!"
else
echo "working!"
fi |
Le script me retourne systématiquement "Working!" même lorsque je stoppe le démon.
J'ai testé la commande en direct dans le terminal mais elle ne me retourne rien.
Code:
root$ curl --connect-timeout 3 --output /dev/null --silent --head --fail rtmp://127.0.0.1/mytv/test 2>&1
J'ai testé en arrêtant le serveur et la diffusion en streaming mais pareil, rien ne se passe lorsque je test dans le terminal et le script me mets toujours "Working!" alors que la diffusion est stoppé.
J'ai cherché à faire plusieurs modification sur la commande mais j'ai toujours les mêmes retours.
J'ai cherché sur le manuel de curl (Man CURL). Il y a de nombreux commutateurs disponibles et je suis un peu perdu.
De ce fait, je me suis tourné vers rtmpdump.
Streaming stoppé, voici la commande que j'ai essayé dans terminal :
Code:
1 2 3 4 5 6 7 8 9 10 11
| root$ rtmpdump -v -m6 -B6 -r rtmp://127.0.0.1/mytv/test -o /tmp/test.flv
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
INFO: Connected...
Starting Live Stream
For duration: 6.000 sec
ERROR: RTMP_ReadPacket, failed to read RTMP packet header
0.000 kB / 0.00 sec
Download may be incomplete (downloaded about 0.00%), try resuming |
La commande arrive à se connecter au serveur mais comme il n'y a aucune diffusion, j'ai en retour une erreur. Jusque là, c'est ce que j'attendais.
Cette fois ci, voici le retour lorsque le streaming est en live :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| $ rtmpdump -v -m6 -B6 -r rtmp://127.0.0.1/mytv/test -o /tmp/test.flv
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
INFO: Connected...
Starting Live Stream
For duration: 6.000 sec
INFO: Metadata:
INFO: Server NGINX RTMP (github.com/arut/nginx-rtmp-module)
INFO: width 960.00
INFO: height 530.00
INFO: displayWidth 960.00
INFO: displayHeight 530.00
INFO: duration 0.00
INFO: framerate 30.00
INFO: fps 30.00
INFO: videodatarate 1800.00
INFO: videocodecid 0.00
INFO: audiodatarate 160.00
INFO: audiocodecid 0.00
3333.187 kB / 21.73 sec[/I]
Interruption de la commande avec CTRL+C
[I]Caught signal: 2, cleaning up, just a second...
ERROR: RTMP_ReadPacket, failed to read RTMP packet header
3333.187 kB / 21.73 sec
Download may be incomplete (downloaded about 0.00%), try resuming |
Tout semble fonctionner sauf que je demande que l'enregistrement s'arrête au bout de 6 secondes mais passé ce délai, la commande s'exécute toujours.
Je suis preneur de vos conseils où information qui me permettrait de sortir de l'impasse. Mon niveau en architecture linux et proche du néant mais j'apprends de jour en jour et j'ai vraiment besoin de réaliser ce test. Je suis prêt à me tourner vers python ou un autre langage si besoin mais je trouvais que batch est le plus simple et logique pour ce que je souhaite faire.
Merci par avance de votre aide.