heh.pl
Kanał informacyjny Heh.pl


Sobota 27 kwietnia 2024 r.

artykuły | abc komputera (archiwum) | forum dyskusyjne | redakcja


Temat

Problem Ze Skryptem Pod Linuksa


84.40.151.* napisał:
Mam do zrobianie skrypt,wkleje moze tresc zdania
"Napisać skrypt o nazwie „skrypt_05.sh”. Skrypt ma pobierać jeden parametr,
będący nazwą interpretera powłoki (np. „bash”), należy sprawdzać, czy podano parametr i czy
istnieje interpreter powłoki o takiej nazwie. Dla zadanego poprzez parametr interpretera, skrypt
ma wyświetlać dla ilu użytkowników, ten interpreter jest interpreterem domyślnym. Wyświetlona
lista ma zostać posortowana według ilości użytkowników, od liczby największej, do
najmniejszej."
no i fajnie,napisalem skrypt,tylko problem ze nie do konca dziala tak jak powinien mur.gif ,wyglada tak
"#!/bin/bash

if [ $# -ne "1" ]; then
echo "Niewlasciwa liczba parametrow!!";
echo "Sposob uzycia `basename $0`: [iterpreter]";
exit;
fi

if [ -e /bin/"$1" ]; then
echo "Jest!";
else
echo "Nie ma takiego iterpretera";
exit;
fi
iterpreter=$1;
awk -F: ' $7~/\/'$iterpreter'$/ { licz+=1; }
END {print "Razem "licz; }' /etc/passwd > temp.tmp
awk -F: ' $7~/\/'$iterpreter'$/ { print $1; } ' /etc/passwd | sort -k 1 >> temp.tmp
cat temp.tmp
rm -f temp.tmp



Dla was poprawienie tego to pewnie kilka minut a mi bardzo pomoze,a gory dziekuje

217.153.29.* napisał:
w tej linijce dodaj
awk -v licz=0 -F: ' $7~/\/'$iterpreter'$/ { licz+=1; } END {print "Razem "licz; }' /etc/passwd > temp.tmp

o ile o to chodzilo ;D

62.87.142.* napisał:
CODE

#!/bin/bash

if [ $# -ne "1" ]; then
 echo "Niewlasciwa liczba parametrow!!";
 echo "Sposob uzycia `basename $0`: [interpreter]";
 exit;
fi

if [ ! -e /bin/"$1" ]; then
 echo "Nie ma takiego interpretera";
 exit;
fi

shell=$1;
echo "Razem:"; cat /etc/passwd | grep "$shell" | awk -F: '{print $1;}' | wc -l
echo "Uzytkownicy:"; cat /etc/passwd | grep "$shell" | awk -F: '{print $1;}' | sort


W zadaniu nie ma nic o tworzeniu plików, więc można to uprościć. Jeśli trzeba do plików zapisać to wystarczy przekierować wyjście poprzez operator ">>". Nie rozumiem zaś ostatniego zdania tego zadania. W tym przypadku można posortować jedynie alfabetycznie (chyba że coś przekręciłeś w treści polecenia).

217.153.29.* napisał:
hmm, przeczytalem jeszcze raz polecenie i tego ostatniego zdania takze nie rozumiem.
nom teraz skrypt ma rece i nogi bigfan icon_wink2.gif pozwolilem sobie go jeszcze usprawnic

CODE
#!/bin/bash

if [ $# -ne "1" ]; then
echo "Niewlasciwa liczba parametrow!!";
echo "Sposob uzycia `basename $0`: [interpreter]";
exit;
fi

if [ ! -e /bin/"$1" ]; then
echo "Nie ma takiego interpretera";
exit;
fi

shell=$1;
ilosc=`cat /etc/passwd | grep "$shell" | awk -F: '{print $1;}' | wc -l`;
if [ $ilosc = "0" ]; then
   echo "Nikt nie uzywa takiej powloki";
else
   echo "Razem: $ilosc";
   echo "Uzytkownicy:"; cat /etc/passwd | grep "$shell" | awk -F: '{print $1;}' | sort
fi



80.53.147.* napisał:
Bez sensu. A jeśli jest /usr/local/bin/bash?
Polecam plik /etc/shells ;]
Poza tym po co wyskakiwać z awk które nie zawsze jest dostępne? Istnieje coś takiego jak 'cut' - w tym wypadku 'cut -f1 -d":"' ;]



62.87.142.* napisał:
Słuszna uwaga z /etc/shells i cut, choć mało jest systemów bez awk. Całość będzie bardziej uniwersalna. Upał (przynajmniej ten wrocławski) daje się we znaki icon_wink.gif

217.153.29.* napisał:
ha, nigdy wczesniej nie widzialem tego pliku /etc/shells
mam w nim sh, bash, tcsh, csh, esh, ksh, zsh, sash, z tym ze: esh, ksh, zsh nie mam w ogole na kompie. wiec jednak u mnie lepiej sprawdziloby sie sprawdzanie w /bin + ew. /usr/local/bin
my fault ?


80.53.147.* napisał:
to już lepiej find / -name "plik" ;]

62.87.147.* napisał:
W przypadku tego zadania w zupełności wystarczy zawartość /etc/shells. Uruchamianie find na / w przypadku dużej ilości danych może nieco negatywnie wpłynąć na szybkość działania skryptu. Poza tym myślę, że zadanie miało przede wszystkim nauczyć wykorzystania skryptów shellowych i paru dodatkowych poleceń w celu wyfiltrowania konkretnych informacji a nie wyszukiwania drobnych niuansów typu położenie plików wykonywalnych itp.

Podobne tematy


Działy









Copyright © 2002-2024 | Prywatność | Load: 4.66 | SQL: 1 | Uptime: 229 days, 13:40 h:m | Wszelkie uwagi prosimy zgłaszać pod adresem eddy@heh.pl