Martin Schmitt <[EMAIL PROTECTED]> writes:
> Zum einen kannst Du in Deiner .bashrc einfach global
>
> export DISPLAY=rechner:0
>
> machen, dann kannst Du Dir die Option "-display", die nicht überall
> implementiert ist, sparen.
Was dann lästig ist, wenn man immer wieder an anderen Rechnern sitzt.
Und so. Folgendes Skript hatte ich mir mal gebastelt, aber seit ssh
liegt es hier nur noch brach herum.
Jochen
#!/bin/sh
#
# Starten eines X-Programmes auf einem anderen Rechner
#
# Portabilitätswarnungen:
# - cut-Optionen ohne Leerstellen
# - host-/domainname
# - sh kann keine Funktionen
# - test kann keine leeren Strings
#
IFS=""
# init_xauth
xauth="j"
if [ `uname -s` = "ULTRIX" ]; then
xauth="n"
fi
# get_domainname:
if [ `uname -s` = "Linux" ]; then
domainname=`dnsdomainname`
else if [ `uname -s` = "ULTRIX" ]; then
domainname=`awk ' /domain/ { print $2} ' /etc/resolv.conf`
else
domainname=`domainname`
fi
fi
# use_ssh
use_ssh="j"
while [ $# -ne 0 ]; do
case $1 in
-d)
display=$2
shift; shift
;;
-l)
user=$2
shift; shift
;;
-a)
xauth="j"
shift 1
;;
-x)
xauth="n"
shift 1
;;
-r)
use_ssh="n"
shift 1
;;
-h)
cat <<+
`basename $0`: Starten von X-Programmen auf anderen Rechnern
-d Display
-l Username
-a xauth
-x xhost
-r rsh statt ssh
-h Hilfe
+
;;
*)
if [ $# -lt 2 ]; then
echo "Zu wenige Parameter, -h fuer Hilfe"
exit 1
fi
host=$1; shift 1
# echo $*
program=$*
while [ "-$1" != "-" ]; do
shift
done
;;
esac
done
if [ "$user" = "" ]; then
user=$USER
fi
if [ "$display" = "" ]; then
display=$DISPLAY
fi
if [ "$use_ssh" = "j" ]; then
remote_shell="ssh"
else
remote_shell="rsh"
fi
# create_display
if [ ":" = `echo $display | cut -c1` ] ; then
# Dieser kram ist _sehr_ Host-spezifisch!
display=`hostname`"."$domainname""$display
else
displayhost=`echo $display | cut -f1 -d:`
displayscreen=`echo $display | cut -f2 -d:`
if [ `echo $displayhost"." | cut -f2 -d.`"" = "" ]; then
displayhost=$displayhost"."`domainname`
else
displayhost=$displayhost
fi
display=$displayhost":"$displayscreen
fi
# Starten des Programmes
if [ "$use_ssh" = "j" ]; then
env DISPLAY=$display ssh $host -f -l $user $program
else
if [ $xauth = "j" ]; then
# Übertragen der xauth-Daten
xauth extract - $DISPLAY | $remote_shell $host -l $user xauth merge -
if [ $? -ne 0 ]; then
echo "Returncode ungleich null bei xauth"
exit 1
fi
else
xhost +$host 2 >/dev/null > /dev/null
if [ $? -ne 0 ]; then
echo "Returncode ungleich null bei xhost"
exit 1
fi
fi
rsh $host -l $user env DISPLAY=$display $program < /dev/null
fi
# env DISPLAY=$display $remote_shell $host -l $user $program < /dev/null
if [ $? -ne 0 ]; then
echo "Returncode ungleich null bei $remote_shell"
exit 1
fi
# Und fertig
--
#include <~/.signature>: permission denied
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org