Sida 1 av 1

bash script

Postat: 10 nov 2016, 11:45
av janneblade
Hej! jag håller på lära mig bash script.

Jag har en uppgift där jag ska skapa ett script som kontrollerar om en viss person är inloggad på systemet.Användaren ska i första hand kunna skickas med som argument till skriptet. Anges inget argument med ska användaren efterfrågas av skriptet.
Om användaren är inloggad ska skriptet returnera 0, annars returneras 1.
OBS! 0 eller 1 ska returneras till det anropande skalet, INTE skrivas ut. Använd exit och inte echo. Testa svaret med att kolla vad variabeln $? har för värde.

har försökt mig fram men kommer inte på någon bra lösning.. någon som kan hjälpa mig?



mvh

Re: bash script

Postat: 10 nov 2016, 12:05
av Gunnar Hjalmarsson
Visa gärna ditt bästa försök hittills, så kanske någon kan hjälpa dig få till det.

Re: bash script

Postat: 10 nov 2016, 13:19
av janneblade
det har du rätt i!


#!/bin/bash

read -p "enter a user" username

grep -iq $username /etc/passwd

exit $?

jag har helt fastnat och känner att jag inte kommer någonstans.. någon som kan bra länkar för bash script osv eller hjälpa mig att förstå uppgiften..

mvh

Re: bash script

Postat: 10 nov 2016, 14:30
av Gunnar Hjalmarsson
Inte mycket research där, va?

$ cat inloggad.sh
#!/bin/bash
TRY=$1
test -n "$TRY" || {
echo "Ange användare att kolla"
read TRY
}
for U in $(users); do
test "$U" = "$TRY" && exit 0
done
exit 1
$ ./inloggad.sh gunnar
$ echo $?
0
$

Re: bash script

Postat: 10 nov 2016, 15:07
av janneblade
Såhär ser det ut nu

read -p "Enter a user: "

if (grep -iq "$REPLY" /etc/passwd > /dev/null) ; exit $?
then
echo "$REPLY finns i systemet

exit 1


sen när jag testar användare genom att skriva

echo $?
så får jag 0 om user finns och 1 om den inte finns


funkar det lika bra?

Re: bash script

Postat: 10 nov 2016, 16:07
av Gunnar Hjalmarsson
Nej. Av flera skäl. Förutom att det du skrev ovan inte är ett fungerande skript, så avviker det från uppgiften på flera punkter.
  • Att greppa /etc/passwd hjälper dig inte att se om en användare är inloggad. (Dessutom greppar du över hela innehållet i filen...)
  • Ingen möjlighet att ange användaren som argument.
  • Du skall skriva exit 0 om användaren hittas, inte exit $?.

Re: bash script

Postat: 10 nov 2016, 17:17
av janneblade
okej! ska kolla på det, tusen tack för hjälpen iaf! (y)