bash script

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
janneblade
Inlägg: 9
Blev medlem: 10 nov 2016, 11:39
OS: Ubuntu
Utgåva: 18.04 Bionic Beaver LTS

bash script

Inlägg 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
Användarvisningsbild
Gunnar Hjalmarsson
Inlägg: 3030
Blev medlem: 08 aug 2010, 13:49
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: bash script

Inlägg av Gunnar Hjalmarsson »

Visa gärna ditt bästa försök hittills, så kanske någon kan hjälpa dig få till det.
janneblade
Inlägg: 9
Blev medlem: 10 nov 2016, 11:39
OS: Ubuntu
Utgåva: 18.04 Bionic Beaver LTS

Re: bash script

Inlägg 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
Användarvisningsbild
Gunnar Hjalmarsson
Inlägg: 3030
Blev medlem: 08 aug 2010, 13:49
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: bash script

Inlägg 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
$
janneblade
Inlägg: 9
Blev medlem: 10 nov 2016, 11:39
OS: Ubuntu
Utgåva: 18.04 Bionic Beaver LTS

Re: bash script

Inlägg 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?
Användarvisningsbild
Gunnar Hjalmarsson
Inlägg: 3030
Blev medlem: 08 aug 2010, 13:49
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: bash script

Inlägg 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 $?.
janneblade
Inlägg: 9
Blev medlem: 10 nov 2016, 11:39
OS: Ubuntu
Utgåva: 18.04 Bionic Beaver LTS

Re: bash script

Inlägg av janneblade »

okej! ska kolla på det, tusen tack för hjälpen iaf! (y)
Skriv svar

Återgå till "Terminalforum"