Kirjoittaja Aihe: Tiedoston vienti palvelimelle scriptillä ?  (Luettu 3258 kertaa)

Mistofelees

  • Käyttäjä
  • Viestejä: 664
    • Profiili
Tiedoston vienti palvelimelle scriptillä ?
« : 23.01.15 - klo:09.51 »
Serveriltä serverille käsin koskematta.

Serverin scripti tuottaa dataa tiedostoon.
Miten scripti saisi parhaiten kopioitua tiedoston toiselle palvelimelle käsin koskematta ?

Tiedostolla on aina sama nimi
Datan suojaustaso on alhainen, pelkkää numeerista mittaustietoa.
Tiedoston koko n. 1 - 5kB
Lähettävä palvelin on palomuurien takana.
Lähettävään palvelimeen ei pysty ottamaan ulkoa mitään yhteyttä.
Vastaanottava palvelin on avoimessa intranetissä.
Loppupeleissä data tulee muokattuna näkyviin weppi-sivulle.
Molempiin koneisiin on root-oikeudet

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11481
    • Profiili
    • Tomin kotisivut
Vs: Tiedoston vienti palvelimelle scriptillä ?
« Vastaus #1 : 23.01.15 - klo:10.47 »
Voiko lähettävä palvelin yhdistää vastaanottavaan palvelimeen? Laittaisin SSH-avaimet ilman tunnuslausetta ja sitten kopioisin ne scp:llä lähettävällä koneella ajastetusti cronilla. Tuota siirtoa varten voi vastaanottavalle koneelle tehdä uuden käyttäjän, jottei muut käyttäjät ole vaarassa ja sinne on myös asennettava SSH-palvelin.

http://linux.fi/wiki/SSH#Tunnistaminen_avainparilla
http://linux.fi/wiki/SCP
http://linux.fi/wiki/Komentojen_ajastaminen#S.C3.A4.C3.A4nn.C3.B6lliset_ty.C3.B6t:_cron_ja_anacron
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

Mistofelees

  • Käyttäjä
  • Viestejä: 664
    • Profiili
Vs: Tiedoston vienti palvelimelle scriptillä ?
« Vastaus #2 : 23.01.15 - klo:10.52 »
Voiko lähettävä palvelin yhdistää vastaanottavaan palvelimeen? Laittaisin SSH-avaimet ilman tunnuslausetta ja sitten kopioisin ne scp:llä lähettävällä koneella ajastetusti cronilla. Tuota siirtoa varten voi vastaanottavalle koneelle tehdä uuden käyttäjän, jottei muut käyttäjät ole vaarassa ja sinne on myös asennettava SSH-palvelin.

http://linux.fi/wiki/SSH#Tunnistaminen_avainparilla
http://linux.fi/wiki/SCP
http://linux.fi/wiki/Komentojen_ajastaminen#S.C3.A4.C3.A4nn.C3.B6lliset_ty.C3.B6t:_cron_ja_anacron

Tuo on varmaan se varmin tapa.
Vastaanottava palvelin on avoimessa verkossa ja sinne pääsee SSH:lla.
Crontab:a käytän aika paljon muutenkin.
Yritin aikoinaan joitain vuosia sitten tätä tapaa, mutta silloin asiassa oli vielä jotain vaikeuksia. En ole kokeillut sen jälkeen.
Kokeillaan
Kiitos

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Vs: Tiedoston vienti palvelimelle scriptillä ?
« Vastaus #3 : 23.01.15 - klo:13.24 »
Yritin aikoinaan joitain vuosia sitten tätä tapaa, mutta silloin asiassa oli vielä jotain vaikeuksia. En ole kokeillut sen jälkeen.

Tämä on kyllä toiminut suunnilleen niin kauan kuin SSH on ollut olemassa. Hankaluudet voivat johtua siitä, että teet avainparisäädöt väärälle käyttäjätunnukselle. Jos cron-skripti suoritetaan pääkäyttäjänä, ssh-asetukset pitää tehdä root-tunnukselle tai käyttäjää on vaihdettava skriptin sisällä scp:tä kutsuttaessa:

Koodia: [Valitse]
su tunnus -c "scp ..."
Siirtoa kannattaa ensin kokeilla ihan manuaalisesti, kirjautuen järjestelmään sillä tunnuksella, jolla siirto on tarkoitus tehdä. Tiedosto pitää saada siirtymään ilman salasanakyselyä ennen cron-skriptin virittelyä.

Mistofelees

  • Käyttäjä
  • Viestejä: 664
    • Profiili
Vs: Tiedoston vienti palvelimelle scriptillä ?
« Vastaus #4 : 29.01.15 - klo:08.49 »
Yritin aikoinaan joitain vuosia sitten tätä tapaa, mutta silloin asiassa oli vielä jotain vaikeuksia. En ole kokeillut sen jälkeen.

Tämä on kyllä toiminut suunnilleen niin kauan kuin SSH on ollut olemassa. Hankaluudet voivat johtua siitä, että teet avainparisäädöt väärälle käyttäjätunnukselle. Jos cron-skripti suoritetaan pääkäyttäjänä, ssh-asetukset pitää tehdä root-tunnukselle tai käyttäjää on vaihdettava skriptin sisällä scp:tä kutsuttaessa:

Koodia: [Valitse]
su tunnus -c "scp ..."
Siirtoa kannattaa ensin kokeilla ihan manuaalisesti, kirjautuen järjestelmään sillä tunnuksella, jolla siirto on tarkoitus tehdä. Tiedosto pitää saada siirtymään ilman salasanakyselyä ennen cron-skriptin virittelyä.

Vika ei ollut järjestelmässä, vaan tyhmässä käyttäjässä. En jättänyt senaikaisia kokeiluita talteen.

Tällä kerralla löysin mielestäni hyvän ratkaisun tähän ongelmaani.
Sen sijaan, että lähettäisin dataa palvelimelle, lähetänkin sen sähköpostilla tilille, jota ei käytetä muuhun.
Datasta tehdään myös kooste lähettävälle koneelle.
Tämä on sikäli hyvä tapa, että datat tulee varmemmin tarkistettua, kun niitä syntyy.

Kyseessä on mittalaitteisto, joka valvoo kiinteistön lämpötilaa, ovia, ikkunoita, veden virtausta, valaistusta...

Tein scriptin, joka hakee ulkoiselta palvelimelta uudet asetusarvot, mikäli niitä on tarjolla.
Tarjolla olemista varten on palvelimella tiedosto, jota muutetaan käsin, jos halutaan lähettää uusia komentoja mittalaitteistolle.
Tämän avaintiedoston muoto on sellainen, että ulkopuolinen ei käsitä sitä avaintiedostoksi. Se on itse asiassa aivan normaali html-sivu, jossa avaimena toimii mikä tahansa muutos tiedoston sisällössä.

Paranoidina olen vielä jakanut avaintiedoston ja siirrettävät tiedostot eri hakemistoihin palvelimella. Periaatteessa ne voisi vaikka jakaa eri palvelimillekin ja vaikka jakaa tiedostot pienemmiksi osiksi tai kryptata.

Haku tehdään niin, että kopioidaan palvelimelta scripti, joka ajetaan haun jälkeen. Tähän scriptiin voin palvelimella tehdä tarvittavat komennot, esimerkiksi käskyn hakea uudet asetusparametrit tai käskyn korvata käytössä olevia scriptejä uusilla.
Lopuksi tehdään mittauskierros ja lähetetään mittaustiedot sähköpostiin.

Watchdogin asemasta crontabissa on käsky, joka palauttaa vanhat scriptit, mikäli uusissa on virheitä.
Järjestelmän päivitys/mittauskierros tehdään tunnin välein. Tätä voi säätää crontabissa.

Kuulostaa monimutkaiselta, mutta on äärimmäisen yksinkertainen. Scriptissä ei montaa riviä ole, paitsi kommentteja.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Tiedoston vienti palvelimelle scriptillä ?
« Vastaus #5 : 02.02.15 - klo:11.09 »
Datan välittäminen sähköpostin kautta on kieltämättä aika paljon monimutkaisempi tapa kuin kopioida tiedosto koneelta A koneelle B.   Tietysti jos sitä sähköpostikopiota tarvitaan johonkin muutenkin niin mikäs siinä.   Tuo kopiointi käy "rsync": n tai "scp": n avulla yhdellä rivillä (ja yhdessä vilauksessa) ssh: n yli kun avaimet ovat valmiina kuten "Tomin" ja "nm"  tuolla ehdottivatkin.  Ilman tunnuksen yliajamista ssh-yhteyden voi avata käyttäen joko "-l <tunnus>" tai  <tunnus>@palvelin -syntaksia valiten -i" -vivulla tällä koneella käytettävän avaimen.  Kohdekoneella oleva avain määräytyy käyttämäsi tunnuksen mukaan.
 
« Viimeksi muokattu: 02.02.15 - klo:11.11 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

Mistofelees

  • Käyttäjä
  • Viestejä: 664
    • Profiili
Vs: Tiedoston vienti palvelimelle scriptillä ?
« Vastaus #6 : 02.02.15 - klo:11.23 »
Datan välittäminen sähköpostin kautta on kieltämättä aika paljon monimutkaisempi tapa kuin kopioida tiedosto koneelta A koneelle B.   Tietysti jos sitä sähköpostikopiota tarvitaan johonkin muutenkin niin mikäs siinä.   Tuo kopiointi käy "rsync": n tai "scp": n avulla yhdellä rivillä (ja yhdessä vilauksessa) ssh: n yli kun avaimet ovat valmiina kuten "Tomin" ja "nm"  tuolla ehdottivatkin.  Ilman tunnuksen yliajamista ssh-yhteyden voi avata käyttäen joko "-l <tunnus>" tai  <tunnus>@palvelin -syntaksia valiten -i" -vivulla tällä koneella käytettävän avaimen.  Kohdekoneella oleva avain määräytyy käyttämäsi tunnuksen mukaan.

Olet oikeassa. SCP on varmaan se lopullinen ratkaisu varsinaiseen tiedonkeruuseen.

Tässä tapauksessa sähköposti kuitenkin puoltaa paikkaansa yhtenä osana järjestelmää.
Joudun valvomaan järjestelmää jatkuvasti ja siinä sähköposti on kätevä. Näkee suoraan kännykällä, mikä on tilanne.
Sähköposti lähettäminen sinänsä on helppoa, eikä vaadi kovin kummallista scriptiä. Olen käyttänyt sitä paljon erilaisten järjestelmien valvontaan.
Kakkosvaiheessa otan SCP:n käyttöön. Kokeilinkin sitä jo.

Tässä järjestelmässä on vielä jonkin verran kokoilemista. Onneksi Arduinon ohjelmisto alkaa jo olla kunnossa. Samaten ulkoisen serverin ohjelmat.  Tiedonsiirrossa Arduinolta Raspille jouduin tekemään jonkin verran turhia kokeiluita, mutta nyt pääsen jo varmaan keskittymään tähän tiedonsiirtoonkin hieman vakavammin.