Stap 13: Volgende stap: telegram met een scherm
Een scherm? Wat is nu een scherm?
Goed scherm is een prima tool voor linux, dat onze opdrachten een bestemming geeft.
Tot nu toe hadden we het telegram messenger begonnen terwijl we waren ingelogd, hetzij direct, hetzij via ssh. En we konden berichten verzenden met de opdracht "msg Andy dit is mijn bericht".
Nu wil ik dat de linux cronjob dit voor ons doet. Telegram beginnen na het opstarten en verzenden van berichten van tijd tot tijd.
Maar hoe? De crontaak weet niet waar te type "ontvanger bericht msg".
Dit is waar de "screen" in handig komt! Als we beginnen met de telegram-client in een nieuw scherm sessie, krijgen we een console met een naam! En dan kunnen we zeggen cronjob: "msg ontvanger Message" sturen naar het scherm met de naam telegramsession. En dit werkt net als in een console, als cronjob zou worden ingelogd.
OK, in de eerste plaats dit lijkt nogal verwarrend, maar je hoeft alleen te spelen een beetje en dan haar steeds duidelijker.
Installatie van scherm met het volgende commando:
sudo apt-get install screen
Start van de telegram-client in een nieuw scherm met het volgende script
#!/bin/sh # Start Telegram in a detached screen. cd /home/pi/telegram/ screen -m -d -L -S TGScreenSession /home/pi/tg/bin/telegram-cli -k /home/pi/tg/tg-server.pub -s /home/pi/telegram/check.lua
In mijn setup wordt de telegram-client geïnstalleerd in /home/pi/tg, terwijl de lua-script en al de bash-scripts in /home/pi/telegram zijn. Ik wilde alleen maar om te scheiden van deze dingen een beetje.
Het commando doet het volgende: start een nieuwe vrijstaande (-d) scherm met de naam TGScreensession (-S) en de volgende opdracht uit te voeren.
Wanneer u deze opdracht, zal niets zichtbaar gebeuren. Het is zoals altijd in Unix: geen nieuws is goed nieuws! Maar in de achtergrond draait het nieuwe scherm.
U kunt het zien als u typt in
screen -ls
Die vindt u alle actieve schermen met PID. TGScreenSession.
En als u zien wat er gaande is in daar wilt, typt u
screen -r (Your Number.TGScreensession)
en druk op enter. Dit brengt u naar het scherm, die zelf is dan "lost". Dat betekent dat zodra u (-r) opnieuw koppelen van een scherm, wordt uw actieve console en de scherm-functies gaan verloren. Dat betekent dat u kunt niet teruggaan naar een scherm vanaf daar. Je moet dan einde telegram met "quit" of "safe_quit" en start van een nieuw scherm.
Neem een kijkje op het scherm-schot.