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 !