Pokaż wyniki 1 do 2 z 2

Temat: logowanie

  1. #1
    Zarejestrowany
    Nov 2006
    Postów
    1

    Domyślnie logowanie

    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.

    Kod:
    #!/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

  2. #2
    Zarejestrowany
    Jun 2006
    Postów
    112

    Domyślnie

    - man
    - google: programowanie w powłoce
    - google: programowanie "bash"
    - google: "bash" "scripting"
    - google: skrypty w linuxie

    ... ;|

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52