• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

sh-script Problem

PNS-Richi

Member
Hi,

also der teil mit dem xdialog( der 1. Aufruf geht nicht der 2. schon) geht nicht.

Der 2 te Aufruf ist eigentlich nur ein echo von dem ersten, somit ist es eigentlich identisch. Denoch geht der erste nicht.

Ich kann, VB, Gambas, PHP, JS, etc., aber bei sh steh ich irgendwie an.

Code:
#!/bin/sh

servers="richi 192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.4"

programm=$*

function init () {
	ssh-keygen -t dsa

	echo "Bitte geben Sie den Hostnamen oder die IP-Adresse des Zielservers an:" 
	read server 

	ssh-copy-id -i $HOME/.ssh/id_dsa.pub $USER@$server

}

function select_server () {

	menu=""
	count=1

	for i in $servers
		do
			count=$(($count+1))
			echo $count
			ping $i -c 1 -q

			#Erreichbar
			if [ $? = 0 ]; then
				#loadavg=`ssh -f $USER@$i cat /proc/loadavg | awk -F " " '{print "1 Minute: "$1 " 5 Minuten: " $2 " 15 Minuten: " $3}'`
				loadavg="blub"
			else
				loadavg="Error: Server Offline!"
				
			fi

			# menu="$menu "\"$i"\" "\"Linux"\""
			menu="$menu \"$i\" \"$loadavg Linux\""
		done

	localhost=`cat /proc/loadavg | awk '{print "1 Minute: "$1 " 5 Minuten: " $2 " 15 Minuten: " $3}'`

	menu="\"localhost\" \"$localhost\"$menu"

	Xdialog --title "Load Balance Desktop Cluster 0.1" --menu "Bitte wählen Sie einen Server aus \nauf dem das gewünschte Programm gestartet werden soll!\n\nBitte wähle einen Server aus:" 24 51 $count $menu 2> /tmp/menu.tmp.$$

Xdialog --title "Load Balance Desktop Cluster 0.1" --menu "Bitte wählen Sie einen Server aus \nauf dem das gewünschte Programm gestartet werden soll!\n\nBitte wähle einen Server aus:" 24 51 6 "localhost" "1 Minute: 1.71 5 Minuten: 1.65 15 Minuten: 1.78" "richi" "blub Linux" "192.168.0.1" "blub Linux" "192.168.0.2" "Error: Server Offline! Linux" "192.168.0.3" "Error: Server Offline! Linux" "192.168.0.4" "Error: Server Offline! Linux"

	retval=$?
	server=`cat /tmp/menu.tmp.$$`
	rm -f /tmp/menu.tmp.$$

	case $retval in
		0)
			#Prüfen ob der Server erreichbar ist
			ping $server -c 1 -q

			#Erreichbar
			if [ $? = 0 ]; then
				echo "Befehl: ssh -X -f $USER@$server $programm"
				ssh -X -f $USER@$server $programm
			#Nicht erreichbar
			elif [ $? = 1 ]; then
			
				Xdialog --title "Der Server $server ist nicht erreichbar" \
			 	       --msgbox "Der Server ist leider nicht erreichbar \nbitte wählen Sie einen anderen Server!" 10 41

				case $? in
					0)
						echo "OK";;
					255)
						echo "Box closed.";;
				esac
				
				#select_server

			fi;;
		1)
			echo "Cancel pressed.";;
		255)
			echo "Box closed.";;
	esac
}

if [ $1 = "--init" ]; then
	init
else
	select_server
fi

Danke für die Hilfe.

lg Richi
 
OP
P

PNS-Richi

Member
Geht nicht:
Code:
Xdialog --title "Load Balance Desktop Cluster 0.1" --menu "Bitte wählen Sie einen Server aus \nauf dem das gewünschte Programm gestartet werden soll!\n\nBitte wähle einen Server aus:" 24 51 $count $menu 2> /tmp/menu.tmp.$$

Geht:
Code:
echo "Xdialog --title \"Load Balance Desktop Cluster 0.1\" --menu \"Bitte wählen Sie einen Server aus \nauf dem das gewünschte Programm gestartet werden soll!\n\nBitte wähle einen Server aus:\" 24 51 $count $menu 2> /tmp/menu.tmp.$$" | sh

Seltsam, entweder ist SH komisch od. ich hab nen Gewaltigen Denkfehler. Vll. sollte ich auch nicht so spät Programmieren und mehr schlafen ;)

lg Richi
 
Oben