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
bash script
-
- Inlägg: 9
- Blev medlem: 10 nov 2016, 11:39
- OS: Ubuntu
- Utgåva: 18.04 Bionic Beaver LTS
- 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
Visa gärna ditt bästa försök hittills, så kanske någon kan hjälpa dig få till det.
-
- Inlägg: 9
- Blev medlem: 10 nov 2016, 11:39
- OS: Ubuntu
- Utgåva: 18.04 Bionic Beaver LTS
Re: bash script
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
#!/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
- 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
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
$
$ 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
$
-
- Inlägg: 9
- Blev medlem: 10 nov 2016, 11:39
- OS: Ubuntu
- Utgåva: 18.04 Bionic Beaver LTS
Re: bash script
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?
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?
- 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
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 $?.
-
- Inlägg: 9
- Blev medlem: 10 nov 2016, 11:39
- OS: Ubuntu
- Utgåva: 18.04 Bionic Beaver LTS
Re: bash script
okej! ska kolla på det, tusen tack för hjälpen iaf! (y)