Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum zapoznaj się z kilkoma zasadami savoir-vivre'u w wątku Administracja-> Przywitaj się. Wątki z problemami zamieszczone w dziale "Przywitaj się" będą usuwane.

Autor Wątek: Skrypt tworzący nowego użytkownika linux  (Przeczytany 3684 razy)

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1319
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #15 dnia: Styczeń 16, 2019, 04:43:38 pm »
otóż gdyby ilość domen i użytkowników była niezmienna to zapewne próbowałbym sam napisać taki skrypt, albo najprawdopodobniej kilka skryptów.
Jednak użytkownicy  dodają domeny i je usuwają jak również sami użytkownicy są dodawani i usuwani w związku z tym liczba tych katalogów "public_html" w poszczególnych domenach będzie się zmieniać i dlatego potrzebuję takiego skryptu, który to wszystko uwzględni.

Teraz określiłeś to bardzo precyzyjnie i rozumiem w czym problem. Spróbujemy to jakoś rozgryźć.

Potrzebnych jest jednak kilka dodatkowych informycji, ale w pierwszym rzędzie istotna jest jedna, t.j.
- na czym (fizycznie) tworzone są wymienione przez Ciebie "zmieniające się domeny" i jaki Ty masz dostęp (jako root?) do serwera(ów) (bo przypuszczam, że jest to co najmniej jeden serwer )?


Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #16 dnia: Styczeń 16, 2019, 08:32:30 pm »
Te domeny (a właściwie katalogi domen) są tworzone tylko i wyłącznie na jednym jedynym VPS, a ich struktura (ścieżka do public_html) wygląda następująco:
/home/NAZWAUŻYTKOWNIKA/domains/NAZWADOMENY/public_htmlOczywiście mam dostęp root po kluczu SSH do tego zdalnego VPS co wynika z wklejonego przeze mnie działającego polecenia.
Jednak to polecenie kopiuje tylko jeden wybrany katalog public_html , a ja chciałbym jakimś skryptem wylistować wszystkie katalogi i je pobrać rsync - iem.


Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1319
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #17 dnia: Styczeń 17, 2019, 08:37:14 am »
Jednak to polecenie kopiuje tylko jeden wybrany katalog public_html , a ja chciałbym jakimś skryptem wylistować wszystkie katalogi i je pobrać rsync - iem.

To zrozumiałem, ale chodziło mi o to, czy jesteś adminem pojedyńczej, wirtualnej maszyny VPS, czy administrujesz całego Hypervisora.
OK, coś przygotujemy. Powiedz mi teraz co jest "podstawą" VPSów, jakiś typ linuksa, któryś z uniksów ?
- jest to istotne, bo zamierzony przez Ciebie backup prawdopodobnie trzeba będzie zrobić "dwuczłonowo", tzn. na VPSie musi również lecieć odpowiedni skrypt...
- by go przygotować muszę wiedzieć, jaki OS jest tam emulowany...

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #18 dnia: Styczeń 17, 2019, 10:55:42 am »
Nie no, mam dostęp tylko do pojedynczej maszyny VPS z Debian 8.3 na pokładzie.

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1319
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #19 dnia: Styczeń 17, 2019, 04:21:34 pm »
Nie no, mam dostęp tylko do pojedynczej maszyny VPS z Debian 8.3 na pokładzie.

No to polecimy..
- załóż katalog i stwórz tekstowy plik np. pod /opt/BackupVPS/ExcludeVPS.list

- do pliku ExcludeVPS.list zapisz:

#
#--napiane przez TataPingu z forum linuxiarze.pl
#
- **/@eaDir
- /lost+found
#--tutaj możesz wyłączyć  dowolną domenę
#- /domenadowyłączenia
#--tutaj możesz wyłączyć  dowolną domenę
+ **/
+ **/public_html/**
- *

Teraz stwórz skrypt, który sterowany będzie crontabem np. pod /opt/BackupVPS/SciaganieVPS

Do pliku-skryptu SciaganieVPS zapisz:

#!/bin/bash
#
#--napiane przez TataPingu z forum linuxiarze.pl
#
#
# CONFIG
#
LOGFILE=/var/log/BackupVPS.log
#
ZRODLO=root@111.22.33.44:/home/
KLUCZ="ssh -p 1111 -i /sciezka/do/kluczaSSH"
CEL=/katalog/z/backupem
EXCLUDEFILE=/opt/BackupVPS/ExcludeVPS.list
#
# END CONFIG

#---- ALGORYTM
#
echo "Dnia $(date) backup domen rozpoczęty" >> "${LOGFILE}"
sleep 1s
#
# i teraz możesz użyć mojego algorytmu (przetestowany lokalnie działa poprawnie
# jak będzie z "kluczem" tego nie wiem)
#
#### rsync -r -t -p -o -g -v --progress --delete --modify-window=1 -l -H --exclude-from="${EXCLUDEFILE}" "${KLUCZ}" "${ZRODLO}" "${CEL}"
#
# albo Twojego (odpowiednio dopasowałem)
#
rsync -chavzP --stats -e "ssh -p 1111 -i /sciezka/do/kluczaSSH" --exclude-from="${EXCLUDEFILE}" "${ZRODLO}" "${CEL}"
#
#---- ALGORYTM
#
echo "Dnia $(date) backup domen zakończony pomyślnie" >> "${LOGFILE}"
sleep 1s
#
exit

Resztę musisz sam dopasować
« Ostatnia zmiana: Styczeń 17, 2019, 04:57:15 pm wysłana przez TataPingu »

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #20 dnia: Styczeń 18, 2019, 02:00:59 pm »
SUPER!!!
Skrypt zadziałał świetnie i w związku z tym pytanie (na PW) jak mogę się odwdzięczyć?

Na razie skrypt testuję ręcznie i zastanawia mnie jedna sprawa tj. przy uruchomieniu go wyskakuje mi komunikat związany z kluczem SSH
Are you sure you want to continue connecting (yes/no)? ECDSA key fingerprint is
Are you sure you want to continue connecting (yes/no)?
Please type 'yes' or 'no':
czy da się jakoś sprawić aby nie było tego pytania gdyż jak cron uruchomi skrypt to niby kto miałby wpisać "yes"
Wracając do skryptu to in + zaskoczyły mnie dwie rzeczy to, że obydwa pliki można ustawić na serwerze docelowym (w moim przypadku na zyxelu) oraz, że można zastosować wyłączenia domen.
Jednak niestety, ale te wyłączenia nie działają, a kombinowałem używając różnych ścieżek i nie wiem gdzie leży błąd?
Przyznam, że ta opcja jest bardzo przydatna i chciałbym wykluczyć np. jedną ścieżką wszystkie domeny danego użytkownika np. /home/user/* jak też jakiś katalog już w samym w public_html np.
/home/user/domains/domena.pl/public_html/przykladowykatalogDa się coś takiego ustawić?
Ponadto to wszystkie te dane miały nieco powyżej 42 GB, ale strasznie długo to trwało tj. blisko 7 godzin, a niby obydwa serwery są pod internetem 100/100 Mbps, ale to już sprawa raczej nie do Ciebie.
« Ostatnia zmiana: Styczeń 18, 2019, 02:11:05 pm wysłana przez gorus1 »

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1319
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #21 dnia: Styczeń 18, 2019, 03:11:29 pm »
SUPER!!!
Skrypt zadziałał świetnie i w związku z tym pytanie (na PW) jak mogę się odwdzięczyć?

Należy mi się "duża piana" (w wysokim kuflu) ;)
- a tak na poważnie, to nauczyć się powściągliwości (najpierw myśleć, a potem formuować zdania)
Ale OK, ja też kiedyś byłem młody...

Na razie skrypt testuję ręcznie i zastanawia mnie jedna sprawa tj. przy uruchomieniu go wyskakuje mi komunikat związany z kluczem SSH
czy da się jakoś sprawić aby nie było tego pytania gdyż jak cron uruchomi skrypt to niby kto miałby wpisać "yes"

Prawdopodobnie tak i na pewno jest to związane z syntaxem:


"ssh -p 1111 -i /sciezka/do/kluczaSSH"
Jeśli Twój zapis działał prawidłowo, to nie używaj zmiennej "KLUCZ", tylko wstaw w to miejsce Twój syntax.
Ew. zmanipuluj odpowiednio $HOME/.ssh/config.

Jednak niestety, ale te wyłączenia nie działają, a kombinowałem używając różnych ścieżek i nie wiem gdzie leży błąd?

W tym miejscu wpisujesz po prostu zarejstrowanego usera (każda domena jest userem), np. jeśli jest jakiś "firmax" (w rzeczywistości na VPSie /home/firmax) to piszesz:

- /firmax
jak też jakiś katalog już w samym w public_html ...
Da się coś takiego ustawić?

Nie, tego już się nie da...

Ponadto to wszystkie te dane miały nieco powyżej 42 GB, ale strasznie długo to trwało tj. blisko 7 godzin

Jeśli używasz mojego algorytmu (rsync -r -t -p -o -g -v --progress --delete --modify-window=1 -l -H), to było to za pierwszym ściąganiem, teraz dane będą tylko aktualizowane

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #22 dnia: Styczeń 18, 2019, 04:11:16 pm »
Kufel piwa poszedł na PW  :)
Odnośnie tego syntaxa to ten sam monit występuje zarówno z użyciem zmiennej "KLUCZ" jak i bez niej.
Natomiast
Cytuj
Ew. zmanipuluj odpowiednio $HOME/.ssh/config.
czy mógłbyś mi podpowiedzieć jak to zrobić, bo przyznam szczerze, że nie rozumiem o co chodzi?

Ponadto
Cytuj
W tym miejscu wpisujesz po prostu zarejstrowanego usera (każda domena jest userem), np. jeśli jest jakiś "firmax" (w rzeczywistości na VPSie /home/firmax)
każda domena nie jest userem, a katalogiem w katalogu domains tego usera.
Jak już wcześniej pisałem - struktura katalogów jest taka:
/home/NAZWAUŻYTKOWNIKA/domains/NAZWADOMENY/public_htmlwięc wg. Twojej instrukcji musiałbym wpisać:
- /NAZWAUŻYTKOWNIKA/domains/NAZWADOMENY.PLi tak też wpisuje, ale to nie działa (kopiuje się zawartość public_html tej domeny i nie wiem dlaczego?
« Ostatnia zmiana: Styczeń 18, 2019, 04:21:26 pm wysłana przez gorus1 »

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1319
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #23 dnia: Styczeń 18, 2019, 06:39:07 pm »
Zle mnie zrozumiałeś...
- pisałem USERA, a to to samo co wg. Ciebie NAZWAUŻYTKOWNIKA (wszystkie bezpośrednie katalogi pod /home/ to USERZY

Powinieneś to tak wyłączyć:

- /NAZWAUŻYTKOWNIKA

i tylko to !

A co do klucza, to musisz to sam "rozgryźć". Na pewno jest możliwe "zautomatyzowanie" procesu meldowania się na VPS. W sieci znajdziesz sporo na ten temat. Chętnie bym doradził, tylko nie znam OSa na ZYXELU, jego struktury itd. Musiałbym mieć bezpośredni dostęp do niego.


Ps - acha, i jeszcze jedno...
Gdy teraz zamkniesz którąś domenę, to już raz ściągnięte dane na ZYXELA musisz po prostu ręcznie zlikwidować...
- przy następnej aktualizacji nie będą ściągane...
« Ostatnia zmiana: Styczeń 18, 2019, 06:53:09 pm wysłana przez TataPingu »

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #24 dnia: Styczeń 18, 2019, 07:25:59 pm »
Duże dzięki za pomoc - sporo mi pomogłeś.
Co do tego klucza to w międzyczasie rozgryzłem gdzie leży problem a mianowicie
Cytuj
domyślnie katalog domowy użytkownika "root" jest ustawiony na /home , który znajduje się w wewnętrznej pamięci flash. Ta pamięć jest usuwana przy każdym ponownym uruchomieniu urządzenia
ale z tym to sobie sam jakoś poradzę, bo pewnie tu chodzi o hosty znane hosty, które też po restarcie są usuwane.
Dodam, że jeżeli nie ma restartu to ta prośba o potwierdzenie pojawia się tylko raz - potem już nie.
Co do samych komend rsync (kopie przyrostowe, różnicowe) to również jest sporo w sieci i sobie spróbuję z tym poradzić.
Jednak cały czas mam problem z tymi wyłączeniami tj. robię dokładnie tak jak piszesz tj.
- /NAZWAUŻYTKOWNIKAale niestety wszystkie public_html tego użytkownika i tak się kopiują.
P.S.
oczywiście usuwam # sprzed polecenia
« Ostatnia zmiana: Styczeń 18, 2019, 07:35:00 pm wysłana przez gorus1 »

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1319
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #25 dnia: Styczeń 18, 2019, 08:32:21 pm »
Jednak cały czas mam problem z tymi wyłączeniami

Chmmm..., sam nie wiem...
- przy testach, które naprędce zrobiłem, wszystko było OK
Z tym, że testy robiłem lokalnie...

Spróbuj może tak:

- **/NAZWAUŻYTKOWNIKA

A co do ssh, to masz prawdopodobnie rację, to "znikający" root...
- ale to jest do ogarnięcia...
« Ostatnia zmiana: Styczeń 19, 2019, 03:23:09 pm wysłana przez TataPingu »

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #26 dnia: Styczeń 19, 2019, 11:15:36 am »
Cytuj
Spróbuj może tak:

- **/NAZWAUŻYTKOWNIKA
bingo - właśnie i to chodziło.
Natomiast wyżej pytałem, czy można wyłączyć jakiś katalog już w samym public_html jakiejś domeny i napisałeś:
Cytuj
Nie, tego już się nie da...
muszę zaprzeczyć, bo właśnie to przetestowałem i da się wyłączyć taki katalog - wystarczy go dopisać do ścieżki np.:
- **/NAZWAUŻYTKOWNIKA/domains/NAZWADOMENY/public_html/wp-admin
Jeszcze raz duże dzięki za pomoc. Teraz pozostało mi już tylko pobawić się ustawieniami samego rsync gdyż docelowo chcę ustawić go w taki sposób, aby robił kopie różnicowe trzymane przez 7 dni wstecz.

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1319
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #27 dnia: Styczeń 19, 2019, 03:30:26 pm »
muszę zaprzeczyć, bo właśnie to przetestowałem i da się wyłączyć taki katalog - wystarczy go dopisać do ścieżki np.:
- **/NAZWAUŻYTKOWNIKA/domains/NAZWADOMENY/public_html/wp-admin

No to nauczyłem się również czegoś nowego..

A tak gwoli informacji, jedna gwiazdka (*) oznacza "jeden pozim/katalog poniżej" (jeden katalog), dwie gwiazdki (**) "cała gałąź poniżej"

Offline gorus1

  • Newbie
  • *
  • Wiadomości: 27
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #28 dnia: Styczeń 20, 2019, 11:56:13 am »
Duże dzięki za wszelkie pomoce - praktycznie dobrnąłem do końca poradziłem sobie również komunikatem o potwierdzeniu (syntax), ale utknąłem na ostatnim etapie całego przedsięwzięcia tj. na crontabie.
Gdybyś zechciał mi pomóc...
wpisuję takie przykładowe polecenie do crontaba:
48 11 * * * sh /i-data/beadda5d/root/.ssh/public_htmlbackup.sh > /dev/null 2>&1
i niby Twój log rejestruje jakieś ruchy
Dnia Sun Jan 20 11:48:01 CET 2019 backup domen rozpoczęty
Dnia Sun Jan 20 11:48:01 CET 2019 backup domen zakończony pomyślnie
ale w tym samy momencie co rozpoczęcie - następuje również zakończenie backupu i nic się nie kopiuje.
Oczywiście jak ręcznie uruchamiam skrypt to wszystko jest ok.
Nie wiem czy chodzi o jakieś prawa czy o coś innego stąd moja prośba o pomoc.
Dodam, że ustawiłem skrypt, aby  był wykonywalny komendą
chmod +x /sciezka/do/skrypt.sh
« Ostatnia zmiana: Styczeń 20, 2019, 11:58:24 am wysłana przez gorus1 »

Offline TataPingu

  • Hero Member
  • *****
  • Wiadomości: 1319
Odp: Skrypt tworzący nowego użytkownika linux
« Odpowiedź #29 dnia: Styczeń 20, 2019, 12:54:39 pm »
......................

Skrypt uruchamiany musi być z roota, np. poniższy syntax regularnie bootuje PCta o godz. 4:00

##------------REGULARNY REBOOT-----------------
5 4 * * * root /sbin/reboot
## Restart o godz 4:00
##------------REGULARNY REBOOT-----------------

Czy np. poniższy, regularnie, co 7 minut uruchamia skrypt poversaver.sh

*/7 * * * * root /usr/local/bin/powersaver.sh
« Ostatnia zmiana: Styczeń 20, 2019, 01:02:54 pm wysłana przez TataPingu »