RunProgram et ezstream
Publié : jeu. 22/avr./2021 8:40
Bonjour.
J'y travaille depuis de longues heures et je ne comprends pas pourquoi cela ne fonctionne pas !
Sur l'ordinateur sous ubuntu 20.04 j'ai installé ezstream afin d'envoyer un fichier .ogg à mon serveur icecast2 en VPS chez OVH.
Depuis un terminal en ligne de commande, pas de soucis je parviens à réaliser la commande.
J'ai voulu automatiser l'opération depuis mon programme de diffusion et je tourne en boucle.
et le contenu de programme.sh (qui est modifié pour être en exécution).
Et bien le fichier titi est généré dans le dossier /Documents/radio_programmation_purebasic/ ou se trouve mon programme exécutable. Par contre il ne veut pas réaliser le ezstream -c $1!
si j'ouvre le fichier titi.txt, je copie la ligne de son contenu. J'ouvre un terminal et je colle la commande il l'éxécute sans problème !
D'ou ma question : Mais pourquoi il ne veut pas la faire cette commande dans le fichier programme.sh ??? Alors qu'en direct depuis le terminal çà marche ! Quelle carabistouille linux empeche cette réalisation ? Quels conseils ou idées avez vous pour me débloquer !
Note si je mets 'ezstream -c $1' en direct dans le fichier programme.sh ca fait rien non plus. Je me suis dis que c'était une question de path alors j'ai rajouté !
Au début j'exécutais directement la commande "ezstream -c Monfichier.xml" depuis le runprogram mais choux blanc. D'ou le fichier programme.sh
Merci de votre aide. La je suis perdu !
J'y travaille depuis de longues heures et je ne comprends pas pourquoi cela ne fonctionne pas !
Sur l'ordinateur sous ubuntu 20.04 j'ai installé ezstream afin d'envoyer un fichier .ogg à mon serveur icecast2 en VPS chez OVH.
Depuis un terminal en ligne de commande, pas de soucis je parviens à réaliser la commande.
J'ai voulu automatiser l'opération depuis mon programme de diffusion et je tourne en boucle.
Code : Tout sélectionner
Procedure Generer_fichier_ice2(Fichier$)
Define Donnees$
Define FichierTempo$
Donnees$ = ""
Donnees$ = Donnees$ + "<?xml version='1.0' encoding='UTF-8'?>"
Donnees$ = Donnees$ + "<!-- Ezstream configuration root element -->"
Donnees$ = Donnees$ + "<ezstream>"
Donnees$ = Donnees$ + " <servers>"
Donnees$ = Donnees$ + " <server>"
Donnees$ = Donnees$ + " <!-- Identifying name; default: 'Default' -->"
Donnees$ = Donnees$ + " <name>Default</name>"
Donnees$ = Donnees$ + " <protocol>HTTP</protocol>"
Donnees$ = Donnees$ + " <hostname>146.59.233.129</hostname>"
Donnees$ = Donnees$ + " <port>8000</port>"
Donnees$ = Donnees$ + " <user>source</user>"
Donnees$ = Donnees$ + " <password>******</password>" ; mot de passe bon, je cache sur le forum
Donnees$ = Donnees$ + " <reconnect_attempts>0</reconnect_attempts>"
Donnees$ = Donnees$ + " <tls>none</tls>"
Donnees$ = Donnees$ + " </server>"
Donnees$ = Donnees$ + " </servers>"
Donnees$ = Donnees$ + " <streams>"
Donnees$ = Donnees$ + " <stream>"
Donnees$ = Donnees$ + " <name>Default</name>"
Donnees$ = Donnees$ + " <mountpoint>/floralies.ogg</mountpoint>"
Donnees$ = Donnees$ + " <intake>Default</intake>"
Donnees$ = Donnees$ + " <server>Default</server>"
Donnees$ = Donnees$ + " <public>No</public>"
Donnees$ = Donnees$ + " <format>Ogg</format>"
Donnees$ = Donnees$ + " <stream_name>floralies.ogg</stream_name>"
Donnees$ = Donnees$ + " <stream_url>http://146.59.233.129:8000/</stream_url>"
Donnees$ = Donnees$ + " <stream_genre>WebRadio</stream_genre>"
Donnees$ = Donnees$ + " <stream_description>Radio Les Floralies</stream_description>"
Donnees$ = Donnees$ + " <stream_quality>1.5</stream_quality>"
Donnees$ = Donnees$ + " <stream_bitrate>16</stream_bitrate>"
Donnees$ = Donnees$ + " <stream_samplerate>44100</stream_samplerate>"
Donnees$ = Donnees$ + " <stream_channels>2</stream_channels>"
Donnees$ = Donnees$ + " </stream>"
Donnees$ = Donnees$ + " </streams>"
Donnees$ = Donnees$ + " <intakes>"
Donnees$ = Donnees$ + " <intake>"
Donnees$ = Donnees$ + " <name>Default</name>"
Donnees$ = Donnees$ + " <type>file</type>"
Donnees$ = Donnees$ + " <filename>" + Fichier$ + "</filename>"
Donnees$ = Donnees$ + " <!-- Setting whether To stream intake indefinitely Or only once -->"
Donnees$ = Donnees$ + " <stream_once>Yes</stream_once>"
Donnees$ = Donnees$ + " </intake>"
Donnees$ = Donnees$ + " </intakes>"
Donnees$ = Donnees$ + " <metaDonnees>"
Donnees$ = Donnees$ + " <format_str>@a@ - @t@</format_str>"
Donnees$ = Donnees$ + " <refresh_interval>-1</refresh_interval>"
Donnees$ = Donnees$ + " <normalize_strings>Yes</normalize_strings>"
Donnees$ = Donnees$ + " <no_updates>No</no_updates>"
Donnees$ = Donnees$ + " </metaDonnees>"
Donnees$ = Donnees$ + "</ezstream>"
FichierTempo$= GetPathPart(ProgramFilename()) + "tempoice.xml"
Debug FichierTempo$
DeleteFile (FichierTempo$, #PB_FileSystem_Force)
If OpenFile(0, FichierTempo$)
Debug "Ok"
Debug Fichier$
WriteString(0, Donnees$, #PB_UTF8 )
EndIf
Define Programme
Define Output$
Define Commande$
Define Parametres$
Commande$ = "bash"
Parametres$ = "programme.sh " + FichierTempo$ ;FichierTempo$
;MessageRequester("Output", Commande$ + Parametres$)
SetCurrentDirectory(GetPathPart(ProgramFilename()))
Delay (1000)
Programme = RunProgram (Commande$,Parametres$, "", #PB_Program_Open | #PB_Program_Read | #PB_Program_UTF8)
;While ProgramRunning(Programme)
; If AvailableProgramOutput(Programme)
; Output$ + ReadProgramString(Programme) + Chr(13)
; EndIf
;Wend
;Output$ + Chr(13) + Chr(13)
;Output$ + "Exitcode: " + Str(ProgramExitCode(Programme))
;CloseProgram(Programme) ; Close the connection to the program
;MessageRequester("Output", Output$)
EndProcedure
Code : Tout sélectionner
#!/bin/bash
#
# Test de fichier bash hubert
#
export PATH=$PATH:$HOME/bin
export PATH=$PATH:$USER/Documents/radio_programmation_purebasic
echo $PATH
$USER/Documents/radio_programmation_purebasic/ezstream -c $1
echo "ezstream -c $1" > titi.txt
si j'ouvre le fichier titi.txt, je copie la ligne de son contenu. J'ouvre un terminal et je colle la commande il l'éxécute sans problème !
D'ou ma question : Mais pourquoi il ne veut pas la faire cette commande dans le fichier programme.sh ??? Alors qu'en direct depuis le terminal çà marche ! Quelle carabistouille linux empeche cette réalisation ? Quels conseils ou idées avez vous pour me débloquer !
Note si je mets 'ezstream -c $1' en direct dans le fichier programme.sh ca fait rien non plus. Je me suis dis que c'était une question de path alors j'ai rajouté !
Au début j'exécutais directement la commande "ezstream -c Monfichier.xml" depuis le runprogram mais choux blanc. D'ou le fichier programme.sh
Merci de votre aide. La je suis perdu !