Cron - Debian sur NUC sans écran

Bonjour,

J’exécute un script python a partir de cron qui doit ouvrir firefox pour afficher un site et copier des données.
Mon script fonctionne très bien quand je me connecte a distance, et s’exécute automatiquement quand j’ai vérifier le $DISPLAY et changé dans le cron.
Ma commande cron commence par export DISPLAY=12.0.

Y a il une solution pour exécuter firefox sans écran?

Merci d’avance

bonjour,
la réponse est simple non. Firefox n’a pas de mode CLI. Par contre tu peux utiliser WGET ou CURL pour faire la même chose et c’est même mieux que de passer par firefox (qui revient à faire une usine à gaz).

commence par regarder les logs coté cron sinon récupérer les messages d’erreur de ton script et voir la source du problème.

a priori firefox a une option qui devrait correspondre ’ --headless Run without a GUI.’

ceci dit, je me pencherai quand même sur d’autres alternatives de type wget , curl et autres. je ne pense pas que Firefox soit le meilleur outil.

Bonjour,

Merci pour votre retour.

Pour Firefox avec le paramètre handless ça ne fonctionne pas.

Mon script affiche la page sur Firefox ensuite je sélectionne tout le texte, colle dans un fichier text et ensuite je vais chercher les données.

Concernant la commande agent ou curl, j ai parcouru la documentation mais je ne vois pas comment je pourrais l utiliser (avoir le contenu mais pas le code car dans le code il y a des script Javascript qui calcul les valeurs que j ai besoin).

Merci pour votre aide

À la limite, le mieux serait de récupérer et exécuter le code en Javascript qui fait le calcul.
Il me semble qu’il est possible de faire ça, mais je n’y connais pas grand chose en Javascript, peut-être avec Node.js ?

Bonjour

On pourrait peut-être proposer une solution si on avait le lien vers la page web concernée et un exemple des données à en extraire,
car à ce stade, sans ces informations, on ne pourra proposer que des généralités sans doute inutiles et finalement, rien de vraiment pertinent.

1 J'aime

Bonjour,

Le programme est conçu pour aller chercher les valeurs de ma production des panneaux solaire sur un webserveur.

Je peux peut-être faire une copie d ecran?

Encore merci

Plutôt qu’une copie d’écran poste nous le résultat d’un curl de la dite page, ce sera nettement plus simple de t’accompagner pour extraire les valeurs désiré via un simple curl :wink:

Si le script doit identifier et sélectionner du texte seulement, pourquoi ne pas passer par un navigateur texte, comme w3m ? (pour éliminer le code html et accéder directement au texte intéressant).

Bonjour,

Voici une partie du code (code source de chrome)

          <table bgcolor="#CED1FF" border="1" cellpadding="1" cellspacing="0" frame="border" rules="cols" width="750">
<tbody>
<tr bgcolor="#A59BC0">
<td width="50%">
<h1><script type="text/JavaScript">document.write(getText(LBL_MOMENTAN))</script>Actuel</h1>
</td>
<td width="50%">
<h1><script type="text/JavaScript">document.write(desc[modus])</script>Année</h1>
</td>
</tr>
<tr>
<td>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr style="font-weight:bold;">
<td width="5%">
</td>
<td width="40%">
<script type="text/JavaScript">document.write(getText(LBL_EINSPEISELSTG))</script>Puissance d´entrée Pac
</td>
<td align="right" width="40%">
<script type="text/JavaScript">
if(mi>0){
for(wrI=getStartIndex();isEndIndex()==false;wrI=getNextIndex()){
if(WRInfo[wrI-1][11]==1||(WRInfo[wrI-1][11]==2&&WRInfo[wrI-1][14]>0&&cntWR>1))
continue
if(curStatusCode[wrI-1]!=255){
data=enumData(m[0],wrI);
localPac+=data[1]
}
}
}
document.write(localPac)
</script>2203
</td>
<td align="right" width="12%">
W
</td>
<td width="3%">
</td>
</tr>
</tbody>
</table>
<script type="text/JavaScript">
document.write("<\/td><td>")
writeTABLE_START("","font-weight:bold;")
writeTD(" ","5%");
writeTD(getText(LBL_ERTRAG),"40%","",sds_gelb);
if(inv&Math.pow(2,31)||modus>0){
}
else{
sum=0
for(wrI=getStartIndex();isEndIndex()==false;wrI=getNextIndex()){
sum+=sumWR[wrI];
}
}
if(isNaN(sum))sum=0;
writeTD(modus==0?runden(sum/1000,2):runden(sum/1000,2),"33%","right",sds_gelb);
writeTD("kWh","19%","right",sds_gelb);
writeTD(" ","3%");
writeTABLE_END();
document.write("<\/td><\/tr><tr><td>")
</script></td><td><table border="0" cellpadding="0" cellspacing="0" height="" width="100%"><tbody><tr><td width="5%"> </td><td width="40%" align="" bgcolor="#FFFF00">Product.</td><td width="33%" align="right" bgcolor="#FFFF00">3580,13</td><td width="19%" align="right" bgcolor="#FFFF00">kWh</td><td width="3%"> </td></tr></tbody></table></td></tr><tr><td>
<table border="0" cellpadding="0" cellspacing="0" height="15" width="100%">
<tbody>
<tr>
<td width="5%">
</td>
<td width="40%">
<script type="text/JavaScript">
if(cntWR==1&&WRInfo[wrTreffer-1][5]>1){
if(WRInfo[wrTreffer-1][5]==2)
document.write(getText(LBL_GENERATOR)+" P1,2")
else{
document.write(getText(LBL_GENERATOR)+" P1,2,3")
}
}
else{
document.write(getText(LBL_GENLSTG)+" Pdc")
}
</script>Puiss. du générateur Pdc
</td>
<td width="40%">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td align="right" width="33%">
<script type="text/JavaScript">
if(cntWR==1&&WRInfo[wrTreffer-1][5]>=3&&curStatusCode[wrTreffer-1]<255){
data=enumData(m[0],wrTreffer);
localPdc+=data[2]
document.write(data[2])
}
else{
document.write("")
}
</script>
</td>
<td align="right" width="33%">
<script type="text/JavaScript">
if(cntWR==1&&WRInfo[wrTreffer-1][5]>=2&&curStatusCode[wrTreffer-1]<255){
data=enumData(m[0],wrTreffer);
if(WRInfo[wrTreffer-1][5]==2){
localPdc+=data[2]
document.write(data[2])
}
else{
localPdc+=data[3]
document.write(data[3])
}
}
else{
document.write("")
}
</script>
</td>
<td align="right" width="33%">
<script type="text/JavaScript">
if(cntWR==1&&WRInfo[wrTreffer-1][5]>=2&&curStatusCode[wrTreffer-1]!=255){
data=enumData(m[0],wrTreffer);
if(WRInfo[wrTreffer-1][5]==2){
localPdc+=data[3];
document.write(data[3]);
}
else{
localPdc+=data[4];
document.write(data[4]);
}
}
else{
var wrI,i;
localPdc=0;
for(wrI=getStartIndex();isEndIndex()==false;wrI=getNextIndex()){
if(WRInfo[wrI-1][11]==1||(WRInfo[wrI-1][11]==2&&WRInfo[wrI-1][14]>0&&cntWR>1))
continue;
if(curStatusCode[wrI-1]!=255){
data=enumData(m[0],wrI);
for(i=1;i<=WRInfo[wrI-1][5];i++)
localPdc+=data[1+i];
}
}
if(localPdc>localPac||localPdc==0)
document.write(localPdc);
else{
document.write("---");
}
}
</script>2311
</td>
</tr>
</tbody>
</table>
<script type="text/JavaScript">
document.write("<\/td>");
writeTD("W","12%","right");
writeTD(" ","3%");
writeTABLE_END();
document.write("<\/td><td>");
writeTABLE_START();
if(Verguetung!=0&&ShowCredit!=0){
writeTD(" ","5%");
writeTD(" ","40%");
e=eurSum/1000;
writeTD(runden(e,2),"33%","right");
writeTD("Euro","19%","right");
writeTD(" ","3%");
}
writeTABLE_END();
document.write("<\/td><\/tr><tr><td>");
document.write("<\/td><\/tr><tr><td>");
writeTABLE_START("15");
writeTD(" ","5%");
writeTD(getText(LBL_WG),"45%");
var e=0;
if(localPdc!=0)
e=localPac/localPdc*100;
if(e<98.0)
writeTD(runden(e),"35%","right");
else{
writeTD(">98","35%","right");
}
writeTD("%","12%","right");
writeTD(" ","3%");
writeTABLE_END();
document.write("<\/td><td>")
writeTABLE_START();
writeTD(" ","5%");
writeTD(getText(LBL_ERTRAG_SPEZ),"40%");
if(isNaN(sum))sum=0;
writeTD(runden(sum/getCurAnlagenKWP(),2),"33%","right");
writeTD("kWh/kWp","19%","right");
writeTD(" ","3%");
writeTABLE_END()
document.write("<\/td><\/tr><tr><td>")
writeTABLE_START()
writeTD(" ","5%");
writeTD(getText(LBL_STATUS),"15%");
var status;
status=calcStatus();
writeTD(status[0],"65%","right");
writeTD(" ","15%");
writeTABLE_END()
document.write("<\/td><td>")
writeTABLE_START()
writeTD(" ","5%");
writeTD(getText(LBL_MAXIMALWERT),"40%","",sds_orange);
if(modus==0&&flag&flagKwp){
writeTD(runden(max/Pspez,2),"33%","right",sds_orange);
writeTD("kW/kWp","19%","right",sds_orange);
}
else{
writeTD(modus==0?max:runden(max/1000),"33%","right",sds_orange);
writeTD(modus==0?"W":"kWh","19%","right",sds_orange);
}
writeTD(" ","3%");
writeTABLE_END();
document.write("<\/td><\/tr><tr><td>");
writeTABLE_START();
writeTD(" ","5%");
writeTD(getText(LBL_FEHLER),"15%");
if(status[1]=="")
status[1]="----"
writeTD(status[1],"60%","right");
writeTD(" ","15%");
writeTABLE_END();
document.write("<\/td><td>");
writeTABLE_START();
writeTD(" ","5%");
if(modus==5||modus==6){
writeTD(getText(LBL_IST)+" &Oslash;","40%","","fuchsia");
writeTD(runden(DurchschnittA/1000,2),"33%","right","fuchsia");
writeTD("kWh/"+getText(LBL_TAG),"19%","right","fuchsia");
}
writeTD(modus<=2?getText(LBL_SOLL)+" "+(offset==0&&modus<=2?" ("+getText(LBL_AUFLAUFEND)+")":"")+" ":"","40%");
if(isNaN(soll))soll=0;
writeTD(modus<=2?runden(soll/1000,2):"","33%","right");
writeTD(modus<=2?"kWh":"","19%","right");
writeTD(" ","3%");
writeTABLE_END();
document.write("<\/td><\/tr><\/tbody><tbody><tr><td>");
if(modus==0&&flag&flagEEG){
writeTABLE_START();
writeTD(" ","5%");
writeTD(getText(LBL_EEG_QUOTE),"","",sds_eeg);
gesVerbrauch>0?writeTD(runden((dVerbrauch/(3600/Intervall))*100/(gesVerbrauch/(3600/Intervall)),2),"40%","right",sds_eeg):writeTD(runden(0,2),"40%","right",sds_eeg)
writeTD("%","12%","right",sds_eeg);
writeTD(" ","3%");
writeTABLE_END();
}
document.write("<\/td><td>");
writeTABLE_START();
writeTD(" ","5%");
if(soll>0){
writeTD(modus<=2?getText(LBL_IST)+" ":"","9%");
writeTD(modus<=2?prognose:"","53%","right");
if(modus==0){
writeTD(runden(ist),"10%","right");
}
else{
writeTD(modus<=2?runden(ist-100,1,1):"","10%","right");
}
writeTD(modus<=2?"%":"","19%","right");
}
writeTD(" ","3%");
writeTABLE_END();
document.write("<\/td><\/tr>");
</script></td><td width="12%" align="right">W</td><td width="3%"> </td></tr></tbody></table></td><td><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td width="5%"> </td><td width="40%"> </td><td width="33%" align="right">716,03</td><td width="19%" align="right">Euro</td><td width="3%"> </td></tr></tbody></table></td></tr><tr><td></td></tr><tr><td><table border="0" cellpadding="0" cellspacing="0" height="15" width="100%"><tbody><tr><td width="5%"> </td><td width="45%">Efficacité de l´onduleur η</td><td width="35%" align="right">95,3</td><td width="12%" align="right">%</td><td width="3%"> </td></tr></tbody></table></td><td><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td width="5%"> </td><td width="40%">Rendement spécifique</td><td width="33%" align="right">497,24</td><td width="19%" align="right">kWh/kWp</td><td width="3%"> </td></tr></tbody></table></td></tr><tr><td><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td width="5%"> </td><td width="15%">Statut</td><td width="65%" align="right">R</td><td width="15%"> </td></tr></tbody></table></td><td><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td width="5%"> </td><td width="40%" align="" bgcolor="#FFA500">Valeur max.</td><td width="33%" align="right" bgcolor="#FFA500">657,1</td><td width="19%" align="right" bgcolor="#FFA500">kWh</td><td width="3%"> </td></tr></tbody></table></td></tr><tr><td><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td width="5%"> </td><td width="15%">Erreur</td><td width="60%" align="right">u</td><td width="15%"> </td></tr></tbody></table></td><td><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td width="5%"> </td><td width="40%">Visé  (Cumul) </td><td width="33%" align="right">4712,40</td><td width="19%" align="right">kWh</td><td width="3%"> </td></tr></tbody></table></td></tr></tbody><tbody><tr><td></td><td><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td width="5%"> </td><td width="9%">réel </td><td width="53%" align="right">(Pronostic : 692 kWh/kWp)</td><td width="10%" align="right">-24,0</td><td width="19%" align="right">%</td><td width="3%"> </td></tr></tbody></table></td></tr>
</tbody>
</table>

ce que recherche c’est le 3580,13

avec curl

<script type="text/JavaScript">
if(modus==0&&cntWR==1&&WRInfo[wrTreffer-1][5]>1)
document.write(WRInfo[wrTreffer-1][5]!=0?"<br>":"")
</script>
<script type="text/JavaScript">var localPac=0,localPdc=0</script>
<table bgcolor="#CED1FF"border="1"cellpadding="1"cellspacing="0"frame="border"rules="cols"width="750">
<tbody>
<tr bgcolor="#A59BC0">
<td width="50%">
<h1><script type="text/JavaScript">document.write(getText(LBL_MOMENTAN))</script></h1>
</td>
<td width="50%">
<h1><script type="text/JavaScript">document.write(desc[modus])</script></h1>
</td>
</tr>
<tr>
<td>
<table border="0"
cellpadding="0"cellspacing="0"width="100%">
<tbody>
<tr style="font-weight:bold;">
<td width="5%">
</td>
<td width="40%">
<script type="text/JavaScript">document.write(getText(LBL_EINSPEISELSTG))</script>
</td>
<td align="right"width="40%">
<script type="text/JavaScript">
if(mi>0){
for(wrI=getStartIndex();isEndIndex()==false;wrI=getNextIndex()){
if(WRInfo[wrI-1][11]==1||(WRInfo[wrI-1][11]==2&&WRInfo[wrI-1][14]>0&&cntWR>1))
continue
if(curStatusCode[wrI-1]!=255){
data=enumData(m[0],wrI);
localPac+=data[1]
}
}
}
document.write(localPac)
</script>
</td>
<td align="right"
width="12%">
W
</td>
<td width="3%">
</td>
</tr>
</tbody>
</table>
<script type="text/JavaScript">
document.write("<\/td><td>")
writeTABLE_START("","font-weight:bold;")
writeTD(" ","5%");
writeTD(getText(LBL_ERTRAG),"40%","",sds_gelb);
if(inv&Math.pow(2,31)||modus>0){
}
else{
sum=0
for(wrI=getStartIndex();isEndIndex()==false;wrI=getNextIndex()){
sum+=sumWR[wrI];
}
}
if(isNaN(sum))sum=0;
writeTD(modus==0?runden(sum/1000,2):runden(sum/1000,2),"33%","right",sds_gelb);
writeTD("kWh","19%","right",sds_gelb);
writeTD(" ","3%");
writeTABLE_END();
document.write("<\/td><\/tr><tr><td>")
</script>
<table border="0"
cellpadding="0"cellspacing="0"height="15"
width="100%">