Hallo,
vielleicht ist der Titel nicht ganz so gut, aber ich will eben erklären, was ich versuche.
Ich habe ein Shellscript geschrieben, welches sowohl direkt von einem angemeldeten Benutzer (bash) als auch als Shell (Eintrag in /etc/passwd) aufrufbar sein soll.
Es funktioniert für beide Fälle. Nur bei dem Aufruf über Bash übergebe ich einen Parameter als Wert ($1), beim Aufruf als Shell verlange ich eine Eingabe dieses Parameters nach der Anmeldung.
Aus Administrationsgründen möchte ich gerne beides in einer Datei zusammenfassen. Durch eine "if-Abfrage" ist das möglich, nur leider weiss ich nicht, ob
1.) der Vaterprozess sshd ist
2.) der Vaterprozess bash ist
Wie realisiert man diese Abfrage. Im Internet habe ich dazu nichts gefunden.
/bin/sh-Script, Ermittlung Vaterprozess [gelöst]
/bin/sh-Script, Ermittlung Vaterprozess [gelöst]
Zuletzt geändert von nil am 24.03.2006 11:51:56, insgesamt 1-mal geändert.
Die Prozess ID des Vaters erhältst du über die Environmentvariable PPID und durch suchen in der Prozessliste kannst du den Vaterprozeß herausfinden.
Aber ist das wirklich notwendig ? geht das nicht so auch:
Gruß
gms
Aber ist das wirklich notwendig ? geht das nicht so auch:
Code: Alles auswählen
PARAM1=$1
if [ -z "$PARAM1" ]; then
echo "Please enter the value for PARAM1:"
read PARAM1
fi
gms
Hallo,
danke für die Antwort. Das funktioniert leider nicht, da das Programm auch ohne Übergabeparameter funktionieren soll.
Aber ich habe eine viel bessere Lösung gefunden:
da die Shell ja nicht Bash ist, funktioniert diese Abfrage.
danke für die Antwort. Das funktioniert leider nicht, da das Programm auch ohne Übergabeparameter funktionieren soll.
Aber ich habe eine viel bessere Lösung gefunden:
Code: Alles auswählen
if [ "$SHELL" != "/bin/bash" ]; then
Hi,
auch wenn du mittlerweile eine Loesung gefunden hast, vielleicht hilft dir ja ein Script das ich letztens geschrieben habe trozdem.
auch wenn du mittlerweile eine Loesung gefunden hast, vielleicht hilft dir ja ein Script das ich letztens geschrieben habe trozdem.
Code: Alles auswählen
#!/usr/bin/sh
#set -x
# ----------------------------------------------
# ps2r.sh - ps to root
# ----------------------------------------------
# erstellt von: roli
# am: 29.12.2005
# ----------------------------------------------
# geaendert von:
# am:
# ----------------------------------------------
# Input: PID des Prozesses, der "getracked" werden
# soll, und die Anzahl der Rekursionen, wenn gewuenscht
# ----------------------------------------------
# Beschreibung:
# Dieses Script gibt auf STDOUT Informationen
# ueber einen belibigen Prozess und seine Eltern
# aus, bis zum "Root" Prozess.
#
rekursion=0
if [ "$#" -eq 0 -o "$#" -gt 2 ]
then
echo "Usage: $0 PID <Number of rekursion: OPTIONAL>"
exit 1
fi
if [ "$1" -gt 0 ]
then
startpid=$1
else
echo "PID must be numeric"
exit 1
fi
if [ "$#" -eq 2 ]
then
anz_rekursion=$2
my_exp='[ "$rekursion" -lt "$anz_rekursion" ]'
else
anz_rekursion=0
my_exp='[ "$startpid" -ne 0 ]'
fi
ueberschrift=`ps -eaf|head -1`
echo "$ueberschrift"
while `eval $my_exp`
do
myppid=`ps -eaf|nawk -v pid=$startpid '{if($2==pid) print $3}' `
process=`ps -eaf|nawk -v pid=$startpid '{if($2==pid) print $0}'`
startpid=$myppid
echo "$process"
rekursion=`echo "$rekursion+1"|bc`
done
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"