Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Rozwiązane Wykonywanie skryptu bez podawania hasła na komputerach w sieci lokalnej.
#1
0
Potrzebuje napisać prosty skrypt wykonujący się na komputerach w sieci lokalnej:
Kod:
#!/bin/bash
for i in $(seq 201 214);
do
ssh -t [email protected].$i  echo elo
done
exit 0


To co wkleiłem prawie spełnia moje oczekiwania, z jednym ale poważnym zastrzeżeniem nie pozwala wykonywać poleceń na komputerach lokalnych z uprawnieniami administratora. Można tak:

Kod:
ssh -t [email protected].$i  [b]sudo[/b] echo elo

ale to wymaga podawania hasła za każdym razem, lub

ssh -t [email protected].$i echo elo
ale niestety nie wiem, jak wymusić logowanie na root-a bez podawania hasła. 

Jeżeli ktoś ma do podesłania jakiś tutorial lub gotowe rozwiązanie to będę wdzięczny. logowanie na root-a traktuje jako ostateczność, wolałbym rozwiązanie z przekazywaniem hasła jako parametr dla skryptu. 
Przeznaczeniem skryptu ma być doinstalowywanie oprogramowania na wszystkich komputerach w sieci lokalnej, czy jego aktualizacja bez konieczności logowania się na każdą maszynę osobno.
#2
0
Teoretycznie dało by się to zrobić przy wykorzystaniu sudo visudo - tę metodę znam i stosowałem u siebie, dodając w sekcji końcowej:
Kod:
#includedir /etc/sudoers.d
USER HOST=NOPASSWD: ŚCIEŻKA_DO_PROGRAMU

Gdzie USER to user Smile, HOST to wynik polecenia hostname, ścieżka... wiadomo Smile

U mnie chodziło o :jw mint=NOPASSWD: /sbin/shutdown. Czyli mogę ustawić wyłączenie komputera o 1:30 w nocy wydając polecenie: sudo shutdown -h 1:30.
W komendzie podajesz "sudo" ale hasło nie jest już wymagane.
Tylko ostrożnie z tym... eskalacja uprawnień zawsze może skończyć się kiepsko.
#3
1
Better response on post RE: Wykonywanie skryptu bez podawania hasła na komputerach w sieci lokalnej.Hasło do skryptu można dodać za pomocą programów sshpass albo passh. Trzeba je zainstalować.
#4
0
Dzięki za podpowiedź.
Jeżeli dobrze rozumiem mając 15 komputerów, na każdym z nich musiałbym mieć zmodyfikowany sudousers, umożliwiający uruchomienie skryptu bez hasła. Następnie modyfikować ten skrypt innym skryptem tak aby znalazły się tam polecenia do wykonania i następnie wykonać ten zmodyfikowany skrypt na każdym komputerze.
Muszę się z tym przespać, ale ta karkołomna konstrukcja wydaje się być możliwa do wykonania.
druga kwestia, na razie dla jednego komputera nie chce mi to działać:
Kod:
#includedir /etc/sudoers.d
md md=NOPASSWD: /home/md/bash/test2.sh
wpisuje:
Kod:
(base) md@md:~$ bash /home/md/bash/test2.sh
[sudo] hasło użytkownika md:
i niestety dalej prosi o hasło.
treść skryptu:
Kod:
#!/bin/bash
sudo apt-get update
sudo apt-get upgrade
Nie mam pomysłu gdzie popełniam błąd.

Pomysł z sshpass przetestuje jutro, ale koncepcja wydaje się być pociągająca.
#5
0
można też założyć usera bez hasła i pod tym userem odpalać skrypt - ale pozostawiam do przemyślenia - coś mi mówi że chyba niespecjalnie jest to rozsądne.
#6
0
Test sshpass:
Kod:
#!/bin/bbash
sshpass -p $1 ssh -t [email protected] sudo apt-get update
niestety wykonanie polecenia na komputerze wymaga podania hasła.
logowanie odbywa się za pomocą przekazanego hasła, ale ten problem udało się rozwiązać za pomocą kluczy.

Wykorzystanie sshpass umożliwia logowanie na root-a przekazując hasło jako parametr funkcji i wtedy można wykonać wszystko co rozwiązuje mój problem.
Jeśli ktoś ma inne rozwiązanie, bardziej eleganckie chętnie się zapoznam.
Dziękuję wszystkim za pomoc.
#7
0
Jeśli logujesz się na roota, zrobisz wszystko. Kwestia bezpieczeństwa.
Oznaczam wątek jako rozwiązany.
Zamykam wątek.


Skocz do:




Użytkownicy przeglądający ten wątek: 1 gości