[+] Dodawanie programu do autostartu (bez logowania)

Konfiguracja serwerów, usług, itp.
cycjusz
Posty: 5
Rejestracja: 16 kwietnia 2011, 08:57

[+] Dodawanie programu do autostartu (bez logowania)

Post autor: cycjusz »

Witam.
Chcę dodać program do uruchamiania się podczas startowania systemu, ale nie mam pojęcia jak się do tego zabrać. Czytałem sporo w internecie, niestety, nie wyciągnąłem z tego czytania żadnej nauki. Posiadam serwer, na którym chcę, aby uruchamiał się po restarcie ventrilo_srv, bez logowania. Do serwera ma dostęp większa ilość osób i jest on niekiedy restartowany, dlatego potrzebuję konkretny opis jak dodać ten program.
Proszę o pomoc i pozdrawiam.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Sposobów jest wiele zależy co i jak chcesz uruchamiać.
Jeśli to skrypt jest możesz nadając mu wcześniej flagę wykonywalności przenieść go /etc/init.d/ wykonać

Kod: Zaznacz cały

update-rc.d skrypt defaults 90
Jeśli to nie skrypt to możesz takowy utworzyć.
cycjusz
Posty: 5
Rejestracja: 16 kwietnia 2011, 08:57

Post autor: cycjusz »

No właśnie, skrypt jako taki to to nie jest, a jest to zwykły program, który chcę uruchamiać poprzez program screen. Mógłbyś mnie nakierować jak skrypt bash utworzyć? Łopatologia mile widziana.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Bardzo prosto robisz taki skrypt.

Kod: Zaznacz cały

su
nano  /etc/init.d/ventrilo_srv
i wklejasz ten tekst zmieniając ścieżkę dostępu do pliku wykonywalnego programu.

Kod: Zaznacz cały

#! /bin/sh
### BEGIN INIT INFO
# Provides:          ventrilo_srv
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:     0 1 6
# Short-Description: Ventrilo server run
### END INIT INFO

/usr/bin/ventrilo_srv
Następnie wykonujesz :

Kod: Zaznacz cały

su
chmod +x /etc/init.d/ventrilo_srv
update-rc.d ventrilo_srv defaults 90
Drugi sposób:
Można jeszcze prościej, dodając ścieżkę do pliku który chce się uruchamiać do /etc/rc.local.

Kod: Zaznacz cały

su
nano /etc/rc.local
Dodaj ścieżkę do pliku powyżej exit 0.

Są to proste sposoby uruchomienia programu bez logowania się w systemie. Jednakże tak uruchomiony program jest uruchamiany z konta root co myślę w przypadku serwera ventrilo powinno właśnie mieć miejsce, będąc jednakowoż usługą systemową.

Minusem takich praktyk jest brak wglądu na zdarzenia podczas pracy programu w przypadku gdy dany program nie serwuje logów.
Można to obejść i uzyskać log w /var/log/ventrilo_server.log, za pomocą naszego skryptu /etc/init.d/ventrilo_srv odpowiednio go zmieniając.

Kod: Zaznacz cały

su
nano /etc/init.d/ventrilo_srv

Kod: Zaznacz cały

#! /bin/sh
### BEGIN INIT INFO
# Provides:          ventrilo_srv
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:     0 1 6
# Short-Description: Ventrilo server run
### END INIT INFO

logfile="/var/log/ventrilo_server.log"                                                                                                                                                                                                                                          
lista() {                                                                                                                                                                                                                                                                    
/usr/bin/ventrilo_srv                                                                                                                                                                                                                                                      
}                                                                                                                                                                                                                                                                            
echo $(lista) >> $logfile
Nie zapomnij o prawidłowej ścieżce do pliku ventrilo_srv.
cycjusz
Posty: 5
Rejestracja: 16 kwietnia 2011, 08:57

Post autor: cycjusz »

Nie wiem, coś mi cały czas nie wychodzi. Ścieżka do programu wykonywalnego to /home/użytkownik1/ventrilo/ventrilo_srv.

Kod z /etc/init.d/ventrilo_srv

Kod: Zaznacz cały

#! /bin/sh
### BEGIN INIT INFO
# Provides:          ventrilo_srv
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:     0 1 6
# Short-Description: Ventrilo server run
### END INIT INFO

/home/user1/ventrilo/ventrilo_srv

Kod: Zaznacz cały

Prawa dostępu
nadane i polecenie:

Kod: Zaznacz cały

update-rc.d
wykonane. Niestety po restarcie nadal nie działa.

W pliku rc.local podałem ścieżkę:

Kod: Zaznacz cały

/home/[b]użytkownik[/b]1/ventrilo/ventrilo_srv
ponad exit 0. Proszę o dalsze wskazówki.
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

Albo skrypt albo rc.local. Nie dwa naraz. Usuń wpis w /etc/rc.local. Po za tym co następuje:

Kod: Zaznacz cały


cd ~/
su
mv ventrilo /usr/lib/
chown  -Rv root:root  /usr/lib/ventrilo
chmod +x  /usr/lib/ventrilo/ventrilo_srv
exit
Zakładam że plik konfiguracyjny ventrilo_srv.ini znajduje się w katalogu /usr/lib/ventrilo
Twój skrypt uruchamiający /etc/init.d/ventrilo_srv :

Kod: Zaznacz cały

su
update-rc.d ventrilo_srv remove
nano /etc/init.d/ventrilo_srv
Użyj tego:

Kod: Zaznacz cały

#! /bin/sh                                                                                                                                                                                                                                                                   
### BEGIN INIT INFO                                                                                                                                                                                                                                                          
# Provides:          ventrilo_srv                                                                                                                                                                                                                                            
# Required-Start:    $remote_fs $syslog $all                                                                                                                                                                                                                                 
# Required-Stop:                                                                                                                                                                                                                                                             
# Default-Start:     2 3 4 5                                                                                                                                                                                                                                                 
# Default-Stop:     0 1 6                                                                                                                                                                                                                                                    
# Short-Description: Ventrilo server run                                                                                                                                                                                                                                     
### END INIT INFO                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                             
cd /usr/lib/ventrilo                                                                                                                                                                                                                                                         
./ventrilo_srv  

Kod: Zaznacz cały

su
update-rc.d ventrilo_srv defaults 90 
Po tym zabiegu zrób test:

Kod: Zaznacz cały

su
/etc/init.d/ventrilo_srv
istotne w sprawie będzie co konsola odpowie . Jak zobaczysz na końcu tego co zwraca konsola - "READY" to znaczy ze działa. Poprzez to polecenie co właśnie wykonałeś uruchamiasz program ręcznie.
cycjusz
Posty: 5
Rejestracja: 16 kwietnia 2011, 08:57

Post autor: cycjusz »

DaVidoSS, naprawdę dziękuję za zaangażowanie i pomoc w moim problemie. Zadziałało. Nie wiem jak mam koledze dziękować. W każdym bądź razie jeszcze raz dziękuję!
Awatar użytkownika
DaVidoSS
Junior Member
Posty: 875
Rejestracja: 06 marca 2010, 11:26
Lokalizacja: ~/

Post autor: DaVidoSS »

E tam, nie ma za co dziękować. Zadziałało bo musi. Pomyśl o logach dla tego programu bo jak będzie się coś działo złego nie będziesz wiedział co!
cycjusz
Posty: 5
Rejestracja: 16 kwietnia 2011, 08:57

Post autor: cycjusz »

Tzn. o logach pomyślał już twórca ventrilo_srv, a mianowicie znajdują się one głównym folderze programu. A wątpię, aby coś się działo niedobrego, ponieważ serwer jest właściwie prywatny i raczej żadnego ataku się nie spodziewam, a wersja ventrilo_srv jest stabilna na tyle, że nie powinna wywalać błędów. Jeszcze raz dziękuję Tobie za pomoc :)
ODPOWIEDZ