Kirjoittaja Aihe: scripti joka avaa ssh yhteyden, suorittaa komennon ja sulkee ssh yhteyden  (Luettu 2972 kertaa)

Bent

  • Käyttäjä
  • Viestejä: 77
    • Profiili
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 :)
« Viimeksi muokattu: 30.03.10 - klo:13.44 kirjoittanut Bent »

_Pete_

  • Käyttäjä
  • Viestejä: 1836
  • Fufufuuffuuu
    • Profiili
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ä)

erauti

  • Käyttäjä
  • Viestejä: 5
    • Profiili
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

Echramath

  • Käyttäjä
  • Viestejä: 242
    • Profiili
    • http://iki.fi/ech/
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).

Bent

  • Käyttäjä
  • Viestejä: 77
    • Profiili
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.

Bent

  • Käyttäjä
  • Viestejä: 77
    • Profiili
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ä)


Tha-Fox

  • Käyttäjä
  • Viestejä: 3315
  • Arch Linux && CentOS
    • Profiili
    • http://kettu.dy.fi
Saat annettua nimen vivulla -S. Esim.
Koodia: [Valitse]
screen -S ekaScreeni

Echramath

  • Käyttäjä
  • Viestejä: 242
    • Profiili
    • http://iki.fi/ech/
Voiko screenin käynnistää automaattisesti niin, että siinä olisi useita ikkunoita ohjelmineen?