und entferne mich dann von den Maschinen.
Nun würde ich gerne auch
1
$ sudo systemctl suspend
mit langen Verzögerungszeiten einsetzen.
Wenn ich unbedarft sleep und sudo verkette, verstreicht das Timeout
zu sudo und für "suspend" wird wieder die interaktive Passworteingabe
fällig.
Wie muss ich das anstellen, um unbemannt nach langer Verzögerung die
Maschinen in den Schlafzustand zu versetzen?
Gernst unabhängig vom sudo-timeout, das möchte ich nicht
umkonfigurieren.
NB: GUI-Lösungen interessieren mich bloss nebensächlich, CLI ist
gefragt.
mit
> langen Verzögerungszeiten einsetzen.>> Wenn ich unbedarft sleep und sudo verkette, verstreicht das Timeout> zu sudo und für "suspend" wird wieder die interaktive Passworteingabe> fällig.
Leider hast Du nicht exakt beschrieben welcher Befehl schiefgeht...
Ich spekuliere aber auf
1
$ sleep 100; sudo systemctlsuspend
Probiere mal:
1
$ sudo sh -c 'sleep 100; systemctl suspend'
Dann wird sofort nach dem sudo-passwort gefragt, dann 100 Sekunden in
einer Subshell gewartet und dann läuft der systemctl.
Alleine durch lesen der manpage zu sudo ist es nicht trivial darauf zu
kommen... :-/ (doch, 1 einzelenes Bsp. ist im Abschnitt EXAMPLES
immerhin still aufgeführt)
HINTS für Nachleser dieses Threads:
-c ist hier NICHT Option von sudo sondern von bash resp. sh
ev. sind in der so eingeleiteten neuen sudo-subshell nicht alle/die
selben Aliasse und Funktionen verfügbar wie in der interakiven shell wo
das ganze losgetreten wird...
schlafwandler schrieb:> sleep $((123 * 60))
nur der Vollständigkeit halber:
Sleep akzeptiert (nicht POSIX, für die Puristen...) auch die Angabe von
Einheiten:
>> »s« für Sekunden (Vorgabe), »m« für Minuten, »h« für Stunden oder »d« für
Tage.
d.H. "sleep 123m"
schlafwandler schrieb:> Ich benutze rege den Befehl $ sudo shutdown -h +123> und entferne mich dann von den Maschinen.
Wenn ein Bösewitzbold innerhalb des sudo-timeouts in die laufende shell
(egal ob lokal oder per ssh) reinkommt hast du ein Problem.
Deshalb benutze ich sudo ausschliesslich mit der option "-k". Zum
Thema:
> Nun würde ich gerne auch $ sudo systemctl suspend> mit langen Verzögerungszeiten einsetzen.
Das schreit nach einem script. Könnte man mit parametern Füttern (zB "~$
schlafin 123")
Eine Vorlage
-Warnung; das script ist irgendwann mal quick and dirty entstanden-
nichts hält solange wie ein Provisorium :D:
Manchmal habe ich noch irgendwelche Downloads laufen, wenn fertig soll
die Kiste runterfahren, das sieht auf dem Schirm folgendermassen aus:
~$ aus_wenn_nw_schlaeft.sh
You are just an ordinary user (but mom loves you just the same).
......try sudo!!!
~$
~$
~$
~$ sudo -k aus_wenn_nw_schlaeft.sh
[sudo] password:
You are root.
Rechner geht aus, wenn Netzwerkspeed (Messintervall 60 Sekunden)
5000 Byte/s unterschreitet
Die erste (vorab 10s) Messung folgt.....
Aktuell 393822 Bytes pro Sekunde
Ab jetzt 60s Intervalle.....
achtung: shutdown ist scharf !!! ...abbruch_mit_ctrl_c
Aktuell 233718 Bytes pro Sekunde
Aktuell 139676 Bytes pro Sekunde
Aktuell 187 Bytes pro Sekunde
---------------------
SHUTDOWN in 2 Minuten
---------------------
LETZTE RETTUNG:
START A NEW, USABLE,
AND VISIBLE SHELL. TYPE:
sudo -k shutdown -c
An alle Benutzer verteilte Nachricht
(/dev/pts/4) um 15:59 ...
The system is going down for halt in 2 minutes!
^Cshutdown: shutdown abgebrochen
~$ ls /root
ls: Öffnen von Verzeichnis /root nicht möglich: Keine Berechtigung
~$
So solls sein. Hinweis: aus_wenn_nw_schlaeft.sh lässt sich hier durch
"aus" tabbend vervollständigen, den ganzen Senf tippe ich natürlich
nicht.
Und so habe ich das verscriptet (Inhalt von bin ist im üblicherweise
im Suchpfad jeder shell):
~$ which aus_wenn_nw_schlaeft.sh
/bin/aus_wenn_nw_schlaeft.sh
~$
~$
~$ ls -l /bin/aus_wenn_nw_schlaeft.sh
-rwxr-xr-x 1 root root 1490 2021-05-06 15:13
/bin/aus_wenn_nw_schlaeft.sh
~$ # bitte nicht wundern wenn die Grösse (1490 Byte) nicht exakt stimmt
- fürs Beispiel ist das folgende listing etwas gekürzt!
~$
~$
~$ cat /bin/aus_wenn_nw_schlaeft.sh
#!/bin/bash
# am-i-root.sh: Am I root or not?
ROOT_UID=0 # Root has $UID 0.
if [ "$UID" -eq "$ROOT_UID" ] # Will the real "root" please stand up?
then
echo "You are root."
else
echo "You are just an ordinary user (but mom loves you just the
same)."
echo "try sudo!!!"
echo
echo
exit 0
fi
#edit20210506 tooslow=500
tooslow=5000
echo "Rechner geht aus, wenn Netzwerkspeed (Messintervall 60 Sekunden)"
echo $tooslow" Byte/s unterschreitet"
echo
echo "Die erste (vorab 10s) Messung folgt....."
oldrx=`ifconfig eth0 | grep "RX bytes:" | awk -F ":" '{print $2}' | awk
'{print $1}'`
sleep 10
rx=`ifconfig eth0 | grep "RX bytes:" | awk -F ":" '{print $2}' | awk
'{print $1}'`
speed=$((($rx-$oldrx)/10))
echo "Aktuell "$speed" Bytes pro Sekunde"
echo
echo "Ab jetzt 60s Intervalle....."
echo "achtung: shutdown ist scharf !!! ...abbruch_mit_ctrl_c"
while [ $tooslow -lt $speed ];do
sleep 60
oldrx=$rx
rx=`ifconfig eth0 | grep "RX bytes:" | awk -F ":" '{print $2}' | awk
'{print $1}'`
speed=$((($rx-$oldrx)/60))
# RX laeuft bei 4G ueber(ifconfig 32Bit), speed---> negative Werte.
Loesung mit Brechstange:
if [ $speed -lt 0 ]; then
speed=123456
fi
echo "Aktuell "$speed" Bytes pro Sekunde"
done
echo "---------------------"
echo "SHUTDOWN in 2 Minuten"
echo "---------------------"
echo "LETZTE RETTUNG:"
echo "START A NEW, USABLE,"
echo "AND VISIBLE SHELL. TYPE:"
echo
echo "sudo -k shutdown -c"
echo
shutdown -h 2
~$
Vielleicht kann ja irgendwann mal irgendwer irgendetwas davon als
Anregung brauchen :D
2aggressive schrieb:> schlafwandler schrieb:>> Ich benutze rege den Befehl $ sudo shutdown -h +123>> und entferne mich dann von den Maschinen.> Wenn ein Bösewitzbold innerhalb des sudo-timeouts in die laufende shell> (egal ob lokal oder per ssh) reinkommt hast du ein Problem.
Wenn das passieren sollte, dann ist $Bösewitzbold entweder Du oder root.
In beiden Fällen ist der sudo-Timeout Dein kleinstes Problem.
OT
Nur_ein_Typ schrieb:> Wenn das passieren sollte, dann ist $Bösewitzbold entweder Du oder root.
Naja, der "echte" root ist kein Bösewitzbold, den Fall kann man getrost
ausschliessen. Allerdings nur solange keiner der sudo-er ausgetrickst
wird.
$Bösewitzbold, vom Rechner aus gesehen mit meiner Identität, hat dann
rootrechte. Mit allem was dies bedeutet, inklusive neuer Identität des
(neuen) $Böseroot.
> In beiden Fällen ist der sudo-Timeout Dein kleinstes Problem.
Das sudo-Timeout ist nicht das Problem, sondern die Ursache des
vorgestellten Szenarios.
2aggressive schrieb:>> Vielleicht kann ja irgendwann mal irgendwer irgendetwas davon als> Anregung brauchen :D
Wer parsed schon noch ifconfig,
zumal oftmals garnicht mehr vorhanden.
lies doch einfach
/sys/class/net/.../statistics/rx_bytes
/sys/class/net/.../statistics/tx_bytes
oder Ausgabe eines tool das schon berechnet
k.A. mal gucken was es hier gerade gibt:
$apropos statistic
ctstat (8) - unified linux network statistics
dmstats (8) - device-mapper statistics management
htstat (1) - returns statistics on the document and word
databases, much like the -s option to htdig or htmerge.
ifstat (1) - Report InterFace STATistics
iwspy (8) - Get wireless statistics from specific nodes
lnstat (8) - unified linux network statistics
netstat (8) - Print network connections, routing tables,
interface statistics, masquerade connections, and multicast memberships
nstat (8) - network statistics tools.
prtstat (1) - print statistics of a process
rtacct (8) - network statistics tools.
rtstat (8) - unified linux network statistics
vmstat (8) - Report virtual memory statistics
netstat -i, ifstat 1 1, ...
Nur_ein_Typ schrieb:> preview schrieb:>> Wer parsed schon noch ifconfig,>> zumal oftmals garnicht mehr vorhanden.>> man 8 ip
Naja, das ist hier auch nicht besser
$ip -h -s link show dev enp0s9
2: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 00:50:ba:c6:e7:54 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
9.77G 6.68M 0 0 0 0
TX: bytes packets errors dropped carrier collsns
300M 4.18M 5 0 0 0
$cat /sys/class/net/enp0s9/statistics/tx_bytes
300128186
$cat /sys/class/net/enp0s9/statistics/rx_bytes
9769332055
gibt Zahlen zum rechnen
oder ein
cat /proc/net/dev
aber ein z.B.
$ifstat 1 1
enp0s9
KB/s in KB/s out
0.00 0.00
1 1, gäbe einen ein-sekündigen Schnappschuss
Er will doch einfach die Rate.
Das muss man doch nicht dauernd durch ein skript nudeln.
preview schrieb:> Nur_ein_Typ schrieb:>> preview schrieb:>>> Wer parsed schon noch ifconfig,>>> zumal oftmals garnicht mehr vorhanden.>>>> man 8 ip>> Naja, das ist hier auch nicht besser>> $ip -h -s link show dev enp0s9> 2: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast> state UNKNOWN mode DEFAULT group default qlen 1000> link/ether 00:50:ba:c6:e7:54 brd ff:ff:ff:ff:ff:ff> RX: bytes packets errors dropped overrun mcast> 9.77G 6.68M 0 0 0 0> TX: bytes packets errors dropped carrier collsns> 300M 4.18M 5 0 0 0
Ach, kleiner Grashüpfer, Du hast meinen Hinweis nicht verstanden und
verfälschst die Ausgabe dann auch noch mutwillig. Ich wollte daran
erinnern, daß ifconfig(8) mittlerweile auch deswegen durch ip(8) ersetzt
wurde, weil sich die Ausgaben von ip(8) deutlich besser maschinell
parsen lassen. Wenn Du das "-h" (als Kurzform von "-human" oder
"-human-readable") mal wegläßt... ach, sieh an, dann kommt da haargenau
dasselbe heraus wie bei Deinem direkten Lesen von sys.
Sonst noch was? Ach ja: für solche Aufgaben gibt es natürlich bereits
fertige Software, um derartige Daten zu sammeln und anzuzeigen, etwa die
Programme sar und sadf aus dem Paket sysstat, die Beats des Elastic
Stack oder die Software telegraf aus dem InfluxDB-Universum.
apropos systemd-run
k.A. xmessage in 10 Sekunden als otto-n;
user@used:$systemd-run --on-active=10 /usr/bin/xmessage hello -display
0:0
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or other units.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
Running timer as unit: run-u63.timer
Will run service as unit: run-u63.service
preview schrieb:> Nur_ein_Typ schrieb:>> verfälschst die Ausgabe dann auch noch mutwillig. Ich wollte daran>> Red keinen Müll.
Tu' ich ja nicht. Du hast das "-h" natürlich bewußt und mutwillig dort
eingebaut, um die Ausgaben von ip(8) so aussehen zu lassen, als ob man
damit nicht anständig rechnen könne, um dann mit Deiner Superlösung zu
reüssieren, aus sys zu lesen. Aber ich hab natürlich Verständnis
dafür, daß Du jetzt enttäuscht bist, wer wird schon gerne beim Schummeln
ertappt. ;-)
> darum gehts> ... | grep "RX bytes:" | awk -F ":" '{print $2}' | awk '{print $1}'
Mir nicht. Bist Du vielleicht ein bisschen fixiert, ja?
preview schrieb:
> lies doch einfach
/sys/class/net/.../statistics/rx_bytes
Passender tipp für mein Problem, danke! Wird von mir natürlich niemals
in diesem script geändert werden, never touch a lazy dog!
> ... | grep "RX bytes:" | awk -F ":" '{print $2}' | awk '{print $1}'>> Autsch!
LOL, ich hatte gewarnt!
Passende Ausrede: beim schreiben des Originals war ich noch "jung und
schön", heute bin ich nur noch "und".
Neben den lachern und den zu erwartenden autschs und facepalms gings mir
primär darum für sich ständig wiederholendes getippsel ("") aufzuzeigen:
- ein script im Suchpfad erspart Tipparbeit (Frei nach Ernst: sudo bash
-c "sleep 123m ; systemctl suspend")
- und leistet womöglich viel mehr (in Anspielung an die statisch
geforderten 123 Minuten bis Feierabend)
So, endlich Feierabend, auf euer wohl, bleibt gesund, Prost :D
Nur_ein_Typ schrieb:> preview schrieb:>> Nur_ein_Typ schrieb:>>> verfälschst die Ausgabe dann auch noch mutwillig. Ich wollte daran>>>> Red keinen Müll.>> Tu' ich ja nicht. Du hast das "-h" natürlich bewußt und mutwillig dort> eingebaut, um die Ausgaben von ip(8) so aussehen zu lassen, als ob man> damit nicht anständig rechnen könne, um dann mit Deiner Superlösung zu> reüssieren, aus sys zu lesen. Aber ich hab natürlich Verständnis> dafür, daß Du jetzt enttäuscht bist, wer wird schon gerne beim Schummeln> ertappt. ;-)>>> darum gehts>> ... | grep "RX bytes:" | awk -F ":" '{print $2}' | awk '{print $1}'>> Mir nicht. Bist Du vielleicht ein bisschen fixiert, ja?
Du hast doch einen an der Waffel.
Süß: formerror_too_many_quoted_lines
mehr Text:
das h steht steht einzig dort, da es aus der shell in welcher es des
öfteren mal autovervoolständigt aufgerufen wird herauskopiert wurde.
lass es halt weg, brauchtst du einen der Händchen hält?
das ist völlig unerheblich wessen output du parsed
ifconfigs: RX packets 6711825 bytes 9814525554 (9.1 GiB)
oder ips: 9814525554 6711825 0 0 0 0
das ist beides Murks.
Nur_ein_Typ schrieb:>> Red keinen Müll.>> Tu' ich ja nicht. Du hast das "-h" natürlich bewußt und mutwillig
Zankt euch bitte nicht, das löst keine Probleme, ist also für keinen
Leser interessant.
SCNR:
Jemand sollte dem Andreas, dem Betreiber dieses Forums, die
Einrichtung eines Subforums benamst "ARENA" vorschlagen. Hätte sicher
viele rege Teilnehmer :D