IRSSI et crontab

Fermé
ildrad - Modifié par ildrad le 5/05/2011 à 10:07
 ildrad - 19 mai 2011 à 11:51
Bonjour,

Et op deux dans une soirée, jeviens car je suis en galère dans un autre script shell ce coup ci et je viens encore à vous dans l'espoir d'avoir un petit coup de pouce me permettant de passer outre ce problème.

voici un bout du code :

#!/bin/bash

blablabla
modification du second script par les lignes qui vont bien
blablabla

tail -f in_progress | /usr/bin/irssi -d &
echo "Fin du script"
sleep 300
exit

Je cherche ici à lancer irssi pour qu'il exécute les commandes qui lui sont transmis par un autre script
ce script est lancé, le second script insérant les commandes est lancé 1min plus tard et lui envoie gentiment les commandes que l'on veut (ces commandes doivent être envoyées avec des intervalles de temps entre elles d'où l'utilisation d'un second script)

voici le second script :

#!/bin/bash

echo ligne modifée par script 1 >> in_progress
sleep 20
echo ligne modifée par script 1 >> in_progress
sleep 7
echo ligne modifée par script 1 >> in_progress
sleep 2
echo ligne modifée par script 1 >> in_progress

exit


Ce script (le premier) marche parfaitement bien quand il est lancé via SSH, mais ne marche pas lancé par crontab.
Pourtant je lance bien irssi en mode dummy (option -d) car il y a une différence entre le SSH et le crontab au niveau des tty (le mode dummy ne nécessite pas de tty pour lancer irssi alors qu'il en a besoin en temps normal)
J'avoue ne pas avoir parfaitement compris l'histoire des tty mais en avoir saisi l'essentiel il me semble (j'ai essayé en utilisant de lancer irssi das un "screen" (qui créé un tty apparemment, mais mon niveau en script de m'a pas permis d'aboutir)

Des idées, suggestions, vannes ?

Merci d'avoir pris le temps de lire ce post pour m'aider.

6 réponses

sudoer Messages postés 113 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 11 juin 2011 14
10 mai 2011 à 13:31
Fait voir ta ligne de crontab qui lance le script, elle appartient à quel utilisateur?
0
elle a été faite avec le compte root :
0 * * * * /var/www/script/script_irc.sh &> /var/www/script/log
0
sudoer Messages postés 113 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 11 juin 2011 14
17 mai 2011 à 16:36
irssi, c'est le client IRC? Qu'est-ce-que tu veux faire avec?
0
Voila

"Je cherche ici à lancer irssi pour qu'il exécute les commandes qui lui sont transmises par un autre script
le premier script est lancé, le second script insérant les commandes est quant à lui lancé 1min plus tard et lui envoie gentiment les commandes que l'on veut (ces commandes doivent être envoyées avec des intervalles de temps entre elles d'où l'utilisation d'un second script) "

Les deux script marchent parfaitement lorsqu'on les lancent à la main en direct ou en SSH, mais pas via le crontab
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sudoer Messages postés 113 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 11 juin 2011 14
18 mai 2011 à 21:01
Ce que je me demande c'est pourquoi tu veux faire ça (pour trouver éventuellement une autre technique qui ferai la même chose).

Sinon, la crontab m'a l'air bonne mais est-ce-que le premier script est exécuté au moins? Tu pourrais mettre une ligne du genre
date >> log.txt

au début du script.
0
Le script 1 est bien lancé, il me sort comme erreur :
"19/05/11 : Execution du script dcc
TERM environment not set
Can't initialize screen handling, quitting.
You can still use the dummy mode with -d parameter"

Ce qui m'a amené au lancement d'IRSSI avec le mode dummy


Je cherche à lancer automatiquement un download sur un DCC en rentrant le serveur, le chan, le bot et le numéro de paquet, sans avoir à se connecter à la main et le dl à la main. En gros, je mets dans une page php le serveur, le chan, le bot et le paquet et le script s'arrange tout seul pour se co et télécharger le fichier.

Le script 2 qui injecte les commande dans le 1 est un truc du genre :

export CHANNEL=""
export PACK_NUMBER=""
echo /connect le serveur >> in_progress
sleep 20
echo /join $CHANNEL >> in_progress
sleep 7
echo /msg le botxdcc send $PACK_NUMBER >> in_progress
sleep 2
echo /dcc get le botxdcc >> in_progress
0