Hyppää sisältöön

9.5 Automaattinen tulostus

9.5 Automaattinen tulostus

Sekä kirjoitin- että tiedostotulostus voidaan käynnistää automaattisena. Tämä voi tapahtua joko käyttäen parametreja tai tulostustoimintojen valikkojen kautta ohjelman ollessa käynnissä.

9.5.1 Html-tiedostojen automaattinen tulostaminen

Viestissä on automaattinen tulostus yleisimmin toteutettava niin, että kunkin osuuden tulokset tulostetaan omaan tiedostoonsa ja mahdolliset väliaikapisteet myös kukin omaan tiedostoonsa. Tämä voidaan toteuttaa käyettäen apuna tiedostoa autofile.lst, jossa luetellaan kaikki pisteet, jotka halutaan tulostaa. Tiedoston kikin rivi on muotoa

sarja osuus  piste

missä vaihto/maali ilmaistaan pisteen numerolla 0.

Ohjelma lisää muodostettavien html-tiedostojen nimirunkoon täsmennyksen _sarja_osuus_piste.html.

Tiedoston nimirunko tied.nimi voidaan antaa parametrilla

html=tied.nimi/tulostusväli

missä tied.nimi voi sisältää myös hakemistopolun ja tulostusväli ilmoitetaan sekunteina. Tämä parametri käynnistää myös automaattisen tulostuksen heti ohjelman käynnistyttyä. Menettely, missä automaattiset tulosteet ohjataan hakemistopolun avulla omaan kansioonsa selkeyttää toimintaa.

9.5.2 Tiedostojen siirto palvelimelle

Kun html-tiedosto on kirjoitettu, voidaan se lähettää automaattisesti www-palvelimelle ulkoisen komentotiedoston avulla. Ohjelma käynnistää tulostuksen jälkeen parametrilla

KOMENTO=komentotiedosto

määritellyn komennon. Komennon tulee toimia käyttäjän puuttumatta eikä se saa kirjoittaa näytölle (stdout ohjataan automaattisesti näkymättömiin).

Aiemmissa versioissa ohjelmassa oli myös sisäänrakennettu FTP-/SFTP-siirto, joka määriteltiin Tiedostopalvelimen määritykset -kaavakkeella ja tallennettiin tiedostoon AutoJakelu.xml, sekä tätä vastaava AUTOJAKELU-käynnistysparametri. Toiminto on poistettu (se edellytti kaupallista lisäosaa) ja korvautuu nyt tällä KOMENTO=-reitillä.

Suositeltu toteutus: rsync + SSH

Nykyaikainen ja tietoturvallinen tapa siirtää tulostiedostot on rsync SSH-yhteyden yli. rsync siirtää vain muuttuneet tiedostot, ja --delay-updates-lippu vaihtaa yksittäiset tiedostot väliaikanimistä lopullisiin nimiin vasta siirron lopuksi. Näin katsojat eivät normaalisti näe puolivalmista html-tiedostoa. SSH:n julkisen avaimen tunnistus korvaa salasanan, joten siirto sopii automaattiseen ajoon.

Esivaatimukset: Windows 10/11, WSL2 + Ubuntu (asennus wsl --install PowerShellissä järjestelmänvalvojana) ja SSH-pääsy kohdepalvelimelle.

Luo avain ja kopioi se palvelimelle WSL-terminaalista:

ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519_kisa
ssh-copy-id -i ~/.ssh/id_ed25519_kisa.pub user@kisapalvelin.fi

Salafraasi on jätettävä tyhjäksi, jotta siirto onnistuu ilman käyttäjän toimenpiteitä.

Luo komentotiedosto, jonka tulospalveluohjelma käynnistää. Tallenna se muualle kuin julkaistavaan html-hakemistoon, esim. nimellä C:\kisa\siirto\siirto.cmd:

@echo off
set LOG=C:\kisa\siirto\siirto.log

wsl -- rsync -a --delete-after --delay-updates ^
  -e "ssh -i /home/KÄYTTÄJÄ/.ssh/id_ed25519_kisa -o StrictHostKeyChecking=accept-new -o ConnectTimeout=10" ^
  /mnt/c/kisa/www/ ^
  user@kisapalvelin.fi:/var/www/html/kisa/ ^
  >> "%LOG%" 2>&1

exit /b %ERRORLEVEL%

Windowsin polku C:\kisa\www\ näkyy WSL:ssä muodossa /mnt/c/kisa/www/. ConnectTimeout=10 estää komentoa jäämästä roikkumaan verkkokatkon tullessa. Pidä siirto.cmd ja siirto.log eri hakemistossa kuin julkaistavat html-tiedostot, jotta niitä ei peilata palvelimelle.

Kytke komento tulospalveluohjelmaan konfiguraatiotiedostossa:

HTML=c:\kisa\www\tulokset.htm/60/S
KOMENTO=c:\kisa\siirto\siirto.cmd

Jos WSL:ää ei voi asentaa, sama toteutuu Windowsin omalla OpenSSH-clientilla ja erikseen asennetulla rsync-paketilla (cwRsync, MSYS2). Tällöin rsync.exe:tä kutsutaan suoraan ja polut ovat Windows-muodossa.