Sida 1 av 1
[Löst]Skriv ut ett meddelande på alla terminaler
Postat: 30 dec 2008, 01:59
av Erikw
Hej!
Jag vill börja äta vid mer regelbundna tider. Hur löser man detta med GNU/Linux? Jo med ett cronjob så klart!
Jag vill göra ett skript som skriver/ekar ett meddelande på alla öppna terminaler (virtuella?) för antingen alla användare eller bara den aktuella (min). Exempelvis gör ju programmet
halt detta.
Kod: Markera allt
erikw@compton:~$ sudo halt
[sudo] password for erikw:
Broadcast message from erikw@compton
(/dev/pts/6) at 1:29 ...
The system is going down for halt NOW!
Hur kan man göra detta? Förslag mottages varmt. Tack på förhand!
Re: Skriv ut ett meddelande på alla terminaler
Postat: 30 dec 2008, 02:09
av Emil.s
"wall" är det du letar efter!
Kod: Markera allt
emil@sandnabba: ~ $> echo 'Time for lunch sweetheart!!!' | wall
Broadcast Message from emil@sandnabba
(/dev/pts/3) at 1:07 ...
Time for lunch sweetheart!!!
Tror man lär köra som root för att även root-terminaler ska se. Man samtidigt så är det väl datorn som är root över dig vid just det tillfället?

Re: Skriv ut ett meddelande på alla terminaler
Postat: 30 dec 2008, 06:42
av dmz
Emil.s skrev:"wall" är det du letar efter!
Kod: Markera allt
emil@sandnabba: ~ $> echo 'Time for lunch sweetheart!!!' | wall
Broadcast Message from emil@sandnabba
(/dev/pts/3) at 1:07 ...
Time for lunch sweetheart!!!
Tror man lär köra som root för att även root-terminaler ska se. Man samtidigt så är det väl datorn som är root över dig vid just det tillfället?

Hm.
Kod: Markera allt
echo 'Time for lunch sweetheart!!!' > /dev/pts/*

Re: Skriv ut ett meddelande på alla terminaler
Postat: 30 dec 2008, 20:40
av Erikw
Utmärkt! Precis vad jag letade efter. Tack!
Re: Skriv ut ett meddelande på alla terminaler
Postat: 30 dec 2008, 20:54
av dmz
Emil: Exakt ungefär vad är skillnaden mellan våra 2 sätt?
Re: Skriv ut ett meddelande på alla terminaler
Postat: 30 dec 2008, 21:13
av Erikw
dmz: ditt fugnerade inte
Kod: Markera allt
erikw@compton:~$ echo 'Time for lunch sweetheart!!!' > /dev/pts/*
bash: /dev/pts/*: ambiguous redirect
Edit. + OT
Upptäckte att klockan i Ubuntu går en timmes fel. Kan man ändra detta i systemet eller måste jag bära fram monitorn från garderoben och ändra i BIOS?
Re: Skriv ut ett meddelande på alla terminaler
Postat: 30 dec 2008, 21:14
av dmz
Erikw skrev:dmz: ditt fugnerade inte
Kod: Markera allt
erikw@compton:~$ echo 'Time for lunch sweetheart!!!' > /dev/pts/*
bash: /dev/pts/*: ambiguous redirect
Kod: Markera allt
┌─(dmz@sophie:pts/0)(~)
└─(19:34:%)── echo 'Time for lunch sweetheart!!!' > /dev/pts/*
Time for lunch sweetheart!!!
┌─(dmz@sophie:pts/0)(~)
└─(20:13:%)──
Funkar fint här :S
Re: Skriv ut ett meddelande på alla terminaler
Postat: 30 dec 2008, 21:16
av Erikw
OT igen
Vad kör du med för skal? Ser intressant ut.
Re: Skriv ut ett meddelande på alla terminaler
Postat: 30 dec 2008, 21:18
av dmz
Erikw skrev:OT igen
Vad kör du med för skal? Ser intressant ut.
zsh!
Re: Skriv ut ett meddelande på alla terminaler
Postat: 30 dec 2008, 22:45
av Emil.s
dmz skrev:Emil: Exakt ungefär vad är skillnaden mellan våra 2 sätt?
Ingen aning riktigt. Är väl typ samma, bara att wall lägger till lite mer info om vem som skickat meddelandet och när.
Men då kan man ju bara fixa ett script i stil med:
Och köra det och skicka outputen till lämplig destination.
Iof så skickar ju wall till allt, båte pts/ och tty:erna.
Men nu stötte jag också på en nöt här. Varför funkar inte "din" väg?
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/
0 1 4
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/*
bash: /dev/pts/*: ambiguous redirect
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/[1-9]
bash: /dev/pts/[1-9]: ambiguous redirect
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/1
root@sandnabba: /root/loggbok #>
Det borde väl funka!? Måste ju vara något med zsh/bash, men terminalerna är ju samma...
Re: Skriv ut ett meddelande på alla terminaler
Postat: 31 dec 2008, 00:03
av dmz
Emil.s skrev:dmz skrev:Emil: Exakt ungefär vad är skillnaden mellan våra 2 sätt?
Ingen aning riktigt. Är väl typ samma, bara att wall lägger till lite mer info om vem som skickat meddelandet och när.
Men då kan man ju bara fixa ett script i stil med:
Och köra det och skicka outputen till lämplig destination.
Iof så skickar ju wall till allt, båte pts/ och tty:erna.
Men nu stötte jag också på en nöt här. Varför funkar inte "din" väg?
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/
0 1 4
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/*
bash: /dev/pts/*: ambiguous redirect
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/[1-9]
bash: /dev/pts/[1-9]: ambiguous redirect
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/1
root@sandnabba: /root/loggbok #>
Det borde väl funka!? Måste ju vara något med zsh/bash, men terminalerna är ju samma...
Tydligen så verkar bash inte stödja expanderingen, wtf? Kan ni inte göra ls *.pn* heller? (Ja, jag vet att den sista expanderas...)
Re: Skriv ut ett meddelande på alla terminaler
Postat: 31 dec 2008, 00:14
av Emil.s
dmz skrev:Emil.s skrev:dmz skrev:Emil: Exakt ungefär vad är skillnaden mellan våra 2 sätt?
Ingen aning riktigt. Är väl typ samma, bara att wall lägger till lite mer info om vem som skickat meddelandet och när.
Men då kan man ju bara fixa ett script i stil med:
Och köra det och skicka outputen till lämplig destination.
Iof så skickar ju wall till allt, båte pts/ och tty:erna.
Men nu stötte jag också på en nöt här. Varför funkar inte "din" väg?
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/
0 1 4
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/*
bash: /dev/pts/*: ambiguous redirect
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/[1-9]
bash: /dev/pts/[1-9]: ambiguous redirect
root@sandnabba: /root/loggbok #> echo 'Hejsan' > /dev/pts/1
root@sandnabba: /root/loggbok #>
Det borde väl funka!? Måste ju vara något med zsh/bash, men terminalerna är ju samma...
Tydligen så verkar bash inte stödja expanderingen, wtf? Kan ni inte göra ls *.pn* heller? (Ja, jag vet att den sista expanderas...)
Jodå, inga problem:
Kod: Markera allt
root@sandnabba: ~ #> ls -l *.o*
-rwx------ 1 emil emil 649 2008-01-05 19:19 shut-down_counter.old
root@sandnabba: ~ #> ls -l *.*o*
-rwx------ 1 emil emil 5490 2008-11-02 19:19 APU.log
-rwx------ 1 emil emil 11098968 2008-02-09 22:18 Propan.mov
-rw------- 1 emil emil 40440 2008-12-23 13:31 sandnabba.se-kernelconfig
-rwx------ 1 emil emil 649 2008-01-05 19:19 shut-down_counter.old
root@sandnabba: ~ #> ls -l *.*[op]*
-rw------- 1 emil emil 196 2008-12-28 19:25 acl.public_html
-rwx------ 1 emil emil 5490 2008-11-02 19:19 APU.log
-rwx------ 1 emil emil 11098968 2008-02-09 22:18 Propan.mov
-rw-r--r-- 1 emil emil 2175818 2008-11-03 22:51 Schema EC3.pdf
-rwx------ 1 emil emil 649 2008-01-05 19:19 shut-down_counter.old
Re: Skriv ut ett meddelande på alla terminaler
Postat: 31 dec 2008, 00:29
av dmz
Väldigt mysko. Det är likadant i Debian tydligen (också bash).
Emil, nu är det hög tid att gå över till zsh för att se om det är där "problemet" ligger.

Re: Skriv ut ett meddelande på alla terminaler
Postat: 31 dec 2008, 01:04
av Emil.s
dmz skrev:Väldigt mysko. Det är likadant i Debian tydligen (också bash).
Emil, nu är det hög tid att gå över till zsh för att se om det är där "problemet" ligger.

hehe, installerade, och se där ja:
Kod: Markera allt
sandnabba# echo "Hejsan" > /dev/pts/*
Hejsan
Då vet vi var problemet ligger iallafall... Man kanske ska lära sig zsh.

Re: Skriv ut ett meddelande på alla terminaler
Postat: 31 dec 2008, 06:02
av dmz
Emil.s skrev:dmz skrev:Väldigt mysko. Det är likadant i Debian tydligen (också bash).
Emil, nu är det hög tid att gå över till zsh för att se om det är där "problemet" ligger.

hehe, installerade, och se där ja:
Kod: Markera allt
sandnabba# echo "Hejsan" > /dev/pts/*
Hejsan
Då vet vi var problemet ligger iallafall... Man kanske ska lära sig zsh.


Re: Skriv ut ett meddelande på alla terminaler
Postat: 31 dec 2008, 13:29
av mcNisse
Jag får inte wall att fungera... Den vägrar skickar inget trots att jag kör som root.
Re: Skriv ut ett meddelande på alla terminaler
Postat: 31 dec 2008, 14:07
av Konservburk
Emil.s skrev:dmz skrev:Väldigt mysko. Det är likadant i Debian tydligen (också bash).
Emil, nu är det hög tid att gå över till zsh för att se om det är där "problemet" ligger.

hehe, installerade, och se där ja:
Kod: Markera allt
sandnabba# echo "Hejsan" > /dev/pts/*
Hejsan
Då vet vi var problemet ligger iallafall... Man kanske ska lära sig zsh.

Eller också lär du dig hur du gör på "rätt sätt" som fungerar oavsett om du använder zsh, bash, eller helt vanlig sh:
Re: Skriv ut ett meddelande på alla terminaler
Postat: 31 dec 2008, 15:59
av dmz
Konservburk skrev:Emil.s skrev:dmz skrev:Väldigt mysko. Det är likadant i Debian tydligen (också bash).
Emil, nu är det hög tid att gå över till zsh för att se om det är där "problemet" ligger.

hehe, installerade, och se där ja:
Kod: Markera allt
sandnabba# echo "Hejsan" > /dev/pts/*
Hejsan
Då vet vi var problemet ligger iallafall... Man kanske ska lära sig zsh.

Eller också lär du dig hur du gör på "rätt sätt" som fungerar oavsett om du använder zsh, bash, eller helt vanlig sh:
Jahaja, där ser man.

Re: Skriv ut ett meddelande på alla terminaler
Postat: 31 dec 2008, 16:16
av Mekaniserad Apelsin
För den som sitter i gnome kanske det är dags att påminna om system - inställningar - tangentbord, där fliken "paus i skrivande" där man kan ställa in ett arbetsintervall, en vilolängd och om det är ok att skjuta upp pauser.
Fast i fallet där man sitter i en "rå" terminal utan grafik (som trådskaparen) hjälper det givetvis inte mycket.