Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Bent - 30.03.10 - klo:13.39
-
Haluaisin luoda scriptin joka avaa ssh yhteyden toiseen linux koneeseeni ja ajaa sudo restart <service> ja sulkee ssh yhteyden.
Olisiko tälläinen tehtävissä ?
Tässä samalla toinen scripti jonka haluaisin tehdä on: scripti joka avaan screenin nimellä käynnistää screenin sisällä prosessin ja tulee screenistä ulos.
Kumpikaan ei ole elitärkeä mutta molemmat lisäisivät WAFia kotona :)
-
Haluaisin luoda scriptin joka avaa ssh yhteyden toiseen linux koneeseeni ja ajaa sudo restart <service> ja sulkee ssh yhteyden.
Olisiko tälläinen tehtävissä ?
Kyllä vain, helpoin tapa lienee se että aktivoit root käyttäjän ja säädät tunnuksen niin että ssh login tapahtuu ilman salasanaa ssh-keyn kanssa, jonka jälkeen voi suoraan tehdä etäkoneesta näin:
ssh root@jokuhost "/etc/init.d/service restart"
Toinen vaihtoehto on säätää tavallinen tunnus niin että sudo ei kysy interaktiivisesti salasanaa (joka siis on vaikea käsitellä scriptissä)
-
Haluaisin luoda scriptin joka avaa ssh yhteyden toiseen linux koneeseeni ja ajaa sudo restart <service> ja sulkee ssh yhteyden.
Olisiko tälläinen tehtävissä ?
Oheista ohjetta soveltamalla voit kehittää toimivan ratkaisun.
Koneiden sammutus etänä yhdeltä työasemalta.
0. Kopioidaan paikallisen koneen käyttäjän ~/.ssh/id_rsa.pub tiedosto uudelle nimelle esim. darkstar.id_rsa.pub
1. Kopioidaan ~/.ssh/darkstar.id_rsa.pub paikalliselta koneelta
etäkoneelle ~/.ssh/ -kansioon.
2. Kopioidaan etäkoneella em. (darkstar.id_rsa.pub) tiedoston sisältö ~/.ssh/authorized_keys tiedostoon
cat darkstar.id_rsa.pub >> authorized_keys
3. Nyt kirjautuminen ssh:lla etäkoneelle onnistuu ilman salasanaa esim.
ssh 192.168.1.10
4. Lisätään etäkoneelle ryhmä shutdown
sudo groupadd shutdown
5. Lisätään käyttäjä ryhmään shutdown esim.
sudo adduser eraut shutdown
6. Muokataan /etc/sudoers tiedostoa, lisätään rivit
%shutdown ALL=(root) NOPASSWD: /sbin/reboot
%shutdown ALL=(root) NOPASSWD: /sbin/halt
%shutdown ALL=(root) NOPASSWD: /sbin/shutdown
Tällä sallitaan "shutdown" ryhmän suorittaa /sbin/reboot, /sbin/halt, ja /sbin/shutdown
komentoja, kuin se olisi ROOT käyttäjä. Heikkoutena on , että käyttäjien pitää
suorittaa komennot sudo etuliitteellä esim.
sudo /sbin/halt
7. Luodaan paikalliselle koneelle skripti esim. etasammuta.sh
#!/bin/bash
for m in `cat mun-eta-koneet`; do
ssh -n $m "sudo shutdown -h now &";
echo "Sammutetaan $m ...";
done
8. Asetetaan skriptin suoritus oikeudet
chmod a+x etasammuta.sh
9. Luodaan tiedosto mun-eta-koneet, jonka sisällöksi asetetaan sammutettavien koneiden
ip-osoitteet esim.
192.168.1.5
192.168.1.10
Nyt skriptin ajamalla voi sammauttaa mun-eta-koneet tiedostossa luetellut koneet.
Lähteet:
http://ubuntuforums.org/showthread.php?t=134968
HOW-TO: non-root user shutdown
http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keygen&sektion=1
https://help.ubuntu.com/community/Sudoers
-
Tässä samalla toinen scripti jonka haluaisin tehdä on: scripti joka avaan screenin nimellä käynnistää screenin sisällä prosessin ja tulee screenistä ulos.
screenissä on optiot -d -m, jotka mahdollistavat käynnistämisen suoraan detachattuun tilaan (ei siis tarvitse "tulla ulos" ollenkaan). Filosofisena testinä kokeilin, minkä kokoisen terminaalin silloin saa, näyttäisi olevan standardinomainen 80×24 (mutta älkää kysykö onko tuo screenin oletus vaiko joku ympäristömuuttuja).
-
Kiitokset vastauksista ja pääsin hyvin alkuun
Löysin tässä ohimennen vielä yhden guiden lisää:
http://linuxproblem.org/art_9.html
ja tosiaan etänä ssh yhteyden avaus ja komennon suoritus onnistuu nyt. Katson seuraavaksi sitä screen asiaa.
-
Sain myös tuon screen asian hoidettua, screenille nimen antaminen ei vielä auennut mutta enköhän joskus törmää siihen infoon, asia ei tosiaan ole tärkeä olsii vain pieni kiva lisä kun olisi helpompi hanskata useita screenejä.
eli esim: screen -d -m rtorrent (avaa uuden screenin detachattuna ja käynnistää rtorrentin screenin sisällä)
-
Saat annettua nimen vivulla -S. Esim.
screen -S ekaScreeni
-
Voiko screenin käynnistää automaattisesti niin, että siinä olisi useita ikkunoita ohjelmineen?