Tworzenie prostego skryptu

Potrzebujesz pomocy z C, C++, perl, python, itp.
Ndejo
Posty: 4
Rejestracja: 09 kwietnia 2010, 14:42

Tworzenie prostego skryptu

Post autor: Ndejo »

W związku z tym, że to mój pierwszy post, także witam wszystkich serdecznie.

Mam zainstalowanego Debiana 5.0.4 i386 na pendrive'ie. Potrzebuję teraz stworzyć skrypt powłoki czyszczący historię poleceń powłoki oraz wymusić jego wykonanie przy wyłączeniu systemu i jego starcie. Do tego mam jeszcze przywrócić pewne pliki konfiguracyjne, ale to może później, jak będę znał podstawy, to myślę, że z drugim problemem sobie poradzę. A jak nie to zawsze liczę na Was zapaleńców.

Jeśli ktoś jest w stanie wytłumaczyć, w jaki sposób można taki skrypt napisać, dać jakiś przykładowy, lub gotowy mnie interesujący - za każdą pomoc będę wdzięczny.

Jeśli ta informacja jest potrzebna/przydatna to mam zainstalowane dwa menadżery logowania gdm i kdm - używam tego drugiego.

Jest to moja pierwsza "podróż" po Linuksie także proszę o wyrozumiałość ;]
tmy123
Beginner
Posty: 144
Rejestracja: 18 kwietnia 2008, 19:43

Post autor: tmy123 »

Historia przechowywana jest w:

Kod: Zaznacz cały

~/.bash_history
Wyczyścić możesz np. poleceniem

Kod: Zaznacz cały

echo > ~/.bash_history
Skrypt sobie już z tego zrobisz bez problemu
Ndejo
Posty: 4
Rejestracja: 09 kwietnia 2010, 14:42

Post autor: Ndejo »

Dziękuję, ale niestety nie wiem jak mam sobie z tego skrypt zrobić. A zwłaszcza jak zrobić, aby był uruchamiany automatycznie i przy starcie i wyłączaniu systemu.
Awatar użytkownika
tremor
Beginner
Posty: 186
Rejestracja: 12 marca 2010, 18:20
Lokalizacja: Wrocław

Post autor: tremor »

Historia jest zapamiętywana w pliku określonym przez zmienną HISTFILE (domyślnie ~/.bash_history). Jeśli zmienna ta jest pusta historia nie będzie w ogóle przechowywana w pliku - może to Ci wystarczy za rozwiązanie.
Coś mi podpowiada, że chcesz zrobić coś brzydkiego, skoro pytasz jak zacierać za sobą ślady...
Ndejo
Posty: 4
Rejestracja: 09 kwietnia 2010, 14:42

Post autor: Ndejo »

Robię projekt protokołu SNMP, który będzie używany przez późniejsze roczniki. Ma być zabezpieczenie właśnie czyszczenia powłoki i przywracania konfiguracji plików po zakończeniu pracy - całość jest osadzona na pendrive.

Dlatego potrzebuję kawałek skryptu. Mam, który tmy123 napisał, ale nadal nie wiem w jaki sposób zapisać, o jakiej nazwie, o jakim rozszerzeniu i w jaki sposób wymusić wykonywanie tego przy starcie i wyłączaniu systemu.

Jakbym chciał coś popsuć to wolałbym to robić na Windowsie - przynajmniej wiem co, jak i gdzie psuć.
Awatar użytkownika
tremor
Beginner
Posty: 186
Rejestracja: 12 marca 2010, 18:20
Lokalizacja: Wrocław

Post autor: tremor »

Oto wyjątek z strony podręcznika basha:

Kod: Zaznacz cały

man bash

Kod: Zaznacz cały

       /etc/profile
              The systemwide initialization file, executed for login shells
       /etc/bash.bashrc
              The systemwide per-interactive-shell startup file
       /etc/bash.bash.logout
              The systemwide login shell cleanup file, executed when  a  login
              shell exits
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The  individual  login shell cleanup file, executed when a login
              shell exits
Przykładowy banalny skrypt bashowy:

Kod: Zaznacz cały

#!/bin/bash

PATH=/bin:/usr/bin

rm $HISTFILE

Ndejo
Posty: 4
Rejestracja: 09 kwietnia 2010, 14:42

Post autor: Ndejo »

Rozumiem, że plik zapisuje o dowolnej nazwie?

A teraz jak zrobić żeby ten skrypt uruchomić automatycznie przy włączaniu/wyłączaniu komputera?
tmy123
Beginner
Posty: 144
Rejestracja: 18 kwietnia 2008, 19:43

Post autor: tmy123 »

Tak dowolnej, tylko musisz nadać prawa do wykonywania czyli:

Kod: Zaznacz cały

chmod a+x nazwa_pliku
Do .bashrc i .bash_logout dodaj np.

Kod: Zaznacz cały

sh nazwa_skryptu.sh
i będzie wykonywany przy zalogowaniu lub wylogowaniu z powłoki.
Lub też żeby był wykonywany przy starcie systemu trzeba do /etc/rc.local dodać.
ODPOWIEDZ