mit welchem Befehl Salix von der Konsole herunterfahren [gelöst]

German Forum
Post Reply
OsunSeyi
Posts: 68
Joined: 4. Dec 2016, 11:05

mit welchem Befehl Salix von der Konsole herunterfahren [gelöst]

Post by OsunSeyi »

Hi,

Ich möchte ein eigenes Shutdown-Script schreiben, um ein Backup zu integrieren.
Unter Slackware habe ich das als Sudo mit "shutdown -h now" realisiert...

Geht das nicht auch einfacher? Also ohne entsprechenden Eintrag via sudo?

viele Grüße
tom
Last edited by OsunSeyi on 14. Mar 2018, 12:52, edited 1 time in total.
OsunSeyi
Posts: 68
Joined: 4. Dec 2016, 11:05

Re: mit welchem Befehl Salix von der Konsole herunterfahren

Post by OsunSeyi »

Ich hab tatsächlich eine andere Möglichkeit gefunden.

Da /usr/bin/wm-logout ConsoleKit verwendet, ergab Suche im Netz den Befehl

Code: Select all

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Fährt das System ohne weitere Rechte oder Nachfrage ac hoc herunter.
Erschien mir subjektiv aber schneller als via Button im wm-logout, ich hoffe, obiger Befehl beendet alle Prozesse sauber.

Das folgende ist mit GtkDialog und meinen etwas mageren Kentnissen zusammengebastelt.
Es erlaubt logout, reboot und shutdown mit (oder ohne) vorangehendem Backup:

Code: Select all

#!/bin/sh

export MAIN_DIALOG='

<window title="SYSHALT"><vbox>
<hbox>
	<checkbox active="true">
		<label>Backup</label>
		<variable>BACKUP</variable>
		<action>echo $BACKUP</action>
	</checkbox>
 
</hbox><hbox>

	<button>
		<label>Logout</label>
		<input file icon="application-exit"></input>
		<action>echo "logout"</action>
		<action type="exit">exit</action>

	</button><button>

		<label>Reboot</label>
		<input file icon="view-refresh"></input>
		<action>echo "reboot"</action>
		<action type="exit">exit</action>

	</button><button>

		<label>Shutdown</label>
		<input file icon="gnome-shutdown"></input>
		<action>echo "shutdown"</action>
		<action type="exit">exit</action>
	</button>

	<button cancel></button>

</hbox>
</vbox></window>'

	RESULT=`gtkdialog --program=MAIN_DIALOG  --geometry +35+620`

# EXIT:
	if   [ -n "$(echo $RESULT | grep Cancel)"   ]	; then exit 0 ; fi

# BACKUP:

	BACKUP=`echo $RESULT | grep 'BACKUP="true"'`

	if [ -n "$BACKUP" ] ; then

		echo 'backup' # rsync....
	fi

# LOGOUT / REBOOT / SHUTDOWN:

	if   [ -n "$(echo $RESULT | grep logout)"   ]	; then

		xlogout

	elif [ -n "$(echo $RESULT | grep reboot)"   ]	; then

		dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit       \
		/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

	elif [ -n "$(echo $RESULT | grep shutdown)" ] 	; then

		dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit 	 \
		/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
	fi

exit 0
User avatar
mimosa
Salix Warrior
Posts: 3311
Joined: 25. May 2010, 17:02
Contact:

Re: mit welchem Befehl Salix von der Konsole herunterfahren

Post by mimosa »

I'm going to reply in English because my German is getting rusty ...

Yes, I think dbus and ConsoleKit is the better way to go. Glancing at your script, I wonder if it allows time for rsync to complete before the shutdown?

What I do myself is use the scripts bundled with Salix's ratpoison package:

Code: Select all

mimosa[~]$ cat /usr/bin/rpshutdown
#!/usr/bin/env python

import dbus
bus = dbus.SystemBus()
shut = bus.get_object('org.freedesktop.ConsoleKit','/org/freedesktop/ConsoleKit/Manager')
shutr = dbus.Interface(shut, 'org.freedesktop.ConsoleKit.Manager')
shutr.Stop()

mimosa[~]$ cat /usr/bin/rpreboot
#!/usr/bin/env python

import dbus
bus = dbus.SystemBus()
shut = bus.get_object('org.freedesktop.ConsoleKit','/org/freedesktop/ConsoleKit/Manager')
shutr = dbus.Interface(shut, 'org.freedesktop.ConsoleKit.Manager')
shutr.Restart()

OsunSeyi
Posts: 68
Joined: 4. Dec 2016, 11:05

Re: mit welchem Befehl Salix von der Konsole herunterfahren

Post by OsunSeyi »

Yes, the script is in fact waiting till rsync is ready, (good luck)
but woudn't it be better do do:

rsync opt.. &&
??

I'm scripting since years, but not on a high level. Everything's very simple.
But I have the experience, that rsync might cause awful problems if it's not correct used.

For exemple, if you use $HOME in the path and start it later not from a terminal but with a button...
Of cause it's ok to try --dry-run before it's getting serious...

Code: Select all

  DRY='--dry-run'
#  DRY=' '

   RSYNC_DAT='rsync -a -v -u '$DRY' --delete --exclude-from=.....'
   RSYNC_HOME='rsync -a -v -u '$DRY' --delete --exclude-from=.....'

			notify-send -t 2000 -h int:x:655 -h int:y:10 "SYSHALT with RSYNC" &

			$RSYNC_DAT
			SUCCDAT=$?
			$RSYNC_HOME
			SUCCHOME=$?

			if [ "$SUCCDAT" -eq "0" -a "$SUCCHOME" -eq "0" ] ; then
    			notify-send -t 2000 -h int:x:655 -h int:y:10 "RSYNC OK"
			else
	    		notify-send -t 2000 -h int:x:655 -h int:y:10 "RSYNC NOT OK , EXIT" &
       exit 1
			fi
	   ...continuing shutdown
User avatar
mimosa
Salix Warrior
Posts: 3311
Joined: 25. May 2010, 17:02
Contact:

Re: mit welchem Befehl Salix von der Konsole herunterfahren

Post by mimosa »

Perhaps it would be better to run rsync on boot rather than shutdown?

In any case, to do it more robustly, yes, it would be good to have error handling, and also logging, since you don't envisage an interactive process (let alone a graphical front end). But then it gets rather complicated.

On the other hand, I believe rsync copes quite well with incomplete backups. So perhaps if your data is not really critical, there is no need to go to such lengths.

Es tut mir Leid, nicht auf Deutsch geschrieben zu haben ... fuer mich waere das auch eine gute Uebung gewesen.
Post Reply