Skocz do zawartości

Ewelina

Użytkownicy
  • Zawartość

    5
  • Rejestracja

  • Ostatnia wizyta

Ewelina's Achievements

Początkujący

Początkujący (3/16)

0

Reputacja

  1. Ewelina

    Makefile

    Nie do końca ponieważ mam taki program: #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[]) { int n; if (argc <= 1){ printf("Podaj argument!\n"); return -1; } n= atoi(argv[1]); if (n >=1) { int i; for (i=0;i<n;i++){ int pid1=fork(); if (pid1==0){ execlp("echo","echo","-n","a\n",NULL); else{//parent int pid2=fork(); if (pid2==0){ waitpid(pid1, NULL, 0); usleep(5); printf("b\n"); return 0; } else{ int pid3=fork(); if (pid3==0){ waitpid(pid1,NULL, 0); waitpid(pid2, NULL, 0); usleep(10); printf("c\n"); return 0; } else{ waitpid(pid1, NULL, 0); waitpid(pid2, NULL, 0); waitpid(pid3, NULL, 0); } } } } } return 0; } I chałałabym go uruchomic za pomoca komendy $make 3 czyli drukowałby to samo trzy razy a jak bym wpisała $make 2 to by drukował dwa razy to samo. I nie wiem jakiej komendy użyć w Makefile żeby pobierał dowolny parametr do tego programu.
  2. Nie wiem jakiej komendy użyć w makefile aby uruchomić program z parametrem np.: $make 3 Nigdzie tego nie moge znaleźć na sieci. A mam już w makefile kompilowanie tego programu. CC=gcc CFLAGS=-Wall -pedantic main: $(CC) $(CFLAGS) fcw.c -o fcw
  3. Ewelina

    Logowanie (bash)

    W jaki inny sposób mogłabym zapisać ten kod nie używając read. grep $loginCtrl hasla | if read field1 field2; then login=$field1 haslo=$field2 fi
  4. Ewelina

    Logowanie (bash)

    Tak chodzi mi to ten fragment umieszczony między [ color=#FF0000 ] a [ /color ]
  5. Napisać skrypt "logowanie", który będzie symulował panel logowania systemu linux. Podawana ma być nazwa użytkownika (jawnie), a następnie hasło (ukryty text). W pliku "hasla", jeżeli jeszcze nie ma wpisu o podanym loginie i haśle należy dopisać te dane w postaci "login haslo" (różnica pomiędzy > a >>). Natomiast w pliku "informacje" należy przechowywać informacje o logowaniach tzw. logi, które posłużą do drugiej czesci zadania (forma dowolna według uznania programisty). II część Parametrami skryptu "logowanie" powinny byc informacje o tym kiedy zmienić hasło danego użytkownika (wywołać komendę passwd). Zmiana hasła następuje po upłynięciu określonego w parametrze okresu czasu przykładowe wywolanie skryptu ./logowanie -g 2 oznaczać to będzie, że jeżeli ostatnie logowanie było conajmniej 2 godziny temu to należy zaproponować użytkownikowi zmianę hasła i uruchomić polecenie passwd. Pozostałe opcje: -d - dni -g - godziny -m - minuty -s - sekundy Problem. W warunku zaznaczonym na czerwono nie wiem dlaczego nie chce mi działać funkcja read i case a moim zdaniem wszystko jest poprawnie napisane i nie wiem jak to poprawić. I jeszcze jedno w jaki sposób mogłabym zrobić nowe hasło do odpowiedniego loginu, ponieważ nie wiem jak zrobic zeby poprzednie hasło się skasowało i w jego miejsce było podane nowe hasło. Bo teraz mam zrobione poprostu że do pliku dopisywany jest ten sam login ale z innym hasłem. #!/bin/bash echo -n "Login: " read loginCtrl echo -n "Haslo: " read -s hasloCtrl #echo "$(date +%s) $loginCtrl" >> informacje; echo #sprawdza czy plik z haslami istnieje if [ ! -e hasla ]; then >hasla fi if [ ! -e informacje ]; then >informacje fi #sprawdza czy login został podany if [ "$loginCtrl" == "" ]; then echo "nieprawidlowy login" exit 1 fi #warunek ktory odczytuje dane z pliku, jeżeli nie znajdzie loginu to #wykonywana jest klauzula else grep $loginCtrl hasla | if read field1 field2; then login=$field1 haslo=$field2 if [ "$login" == "$loginCtrl" ] && [ "$haslo" == "$hasloCtrl" ]; then cat informacje | tail -n 1 | if read loginTime loginName; then now=`date +"%s"` lastlog=$(($now-$loginTime)) case "$1" in "-d") if [ $(($lastlog/86400)) -ge "$2" ]; then ./zmienhaslo fi ;; "-g") if [ $(($lastlog/3600)) -ge "$2" ]; then ./zmienhaslo fi ;; "-m") if [ $(($lastlog/60)) -ge "$2" ]; then ./zmienhaslo fi ;; "-s") if [ $(($lastlog)) -ge "$2" ]; then echo "Czy chcesz zmienic haslo?" echo "t-tak n-nie" read d case "$d" in "t") echo "Podaj nowe haslo do $loginCtrl " echo "Haslo: " read -s hasloCtrl if [ "$hasloCtrl" == "" ]; then exit 3 fi echo "$loginCtrl $hasloCtrl" >> hasla echo "Nowe haslo do $loginCtrl zostalo utworzone" ;; "n") exit 2 ;; esac fi ;; *) echo "zly parametr" ;; esac fi echo $(date +%s) $loginCtrl >> informacje fi else echo "$loginCtrl $hasloCtrl" >> hasla echo "stworzone haslo dla uzytkownika $loginCtrl" fi
×
×
  • Dodaj nową pozycję...