Kysymys guruille

Tsau

Oon tehny shell-skriptin, jossa otetaan telnet yhteen purnukkaan ja ajetaan komento.

Telnet siksi, ettei purkki tue ssh:ta eikä edes rsh:ta.

Homma toimii loistavasti linuxissa itsessään kun sitä testasin, mutta ko. purnukka huomaa jostain, ettei terminaali olekaan vt100 (joka on vähimmäisvaatimus) ja heittää virheilmoituksen jälkeen siksi ulos.

Mistä se voi tietää ettei kyseessä ole oikea terminaali? Nyt oon kyllä huuli pyöreenä täällä.
21896
Äänestä

Muut lukivat myös

Vastaukset 21

Vanhimmat

En ole guru mutta tuli vain mieleen että ainakin KDE:n konsolissa voi sanoa että näppis on vt100(historic).

Olisko sillä vaikutusta?

Äänestä

tee kotihakemistoosi .telnetrc jotenkin tmän näköinen

DEFAULT
    environ undefine USER
# First system entry
purkki
    environ define TERM 'VT100'

En tiedä tarvitaanko tuota default osuutta lainkaan. Itse kokeilin pistää tuon vt100 rivin default-kohtaan ja toimi. Update: kokeilin ilman defaultia ja toimi. Tuo purkin osoite tarvitsee olla hosts-tiedostossa tai voit käyttää myös suoraan ip-osoitetta.

P.S. Tosimies kun ei backspacea käytä! Ni!

Äänestä
  • Tätäpä testaan heti kun mahdollista ja kerron sitten miten kävi. Vaikuttaa lupaavalta, tänks!

    Äänestä

  • Ilmeisesti serveripään softa lähtettää jotain kontrollisignaaleja millä tarkistaa terminaalin tyypin. Tuntuu olevan mission impossible.

    Kokeilin expectillä ja yhtä huonolla menestyksellä.

    Äänestä

  • auttanut kirjoitti:

    Ilmeisesti serveripään softa lähtettää jotain kontrollisignaaleja millä tarkistaa terminaalin tyypin. Tuntuu olevan mission impossible.

    Kokeilin expectillä ja yhtä huonolla menestyksellä.

    sulla oikeen aiheuttaa harmaita hiuksia?

    Äänestä

  • riivatun purkki kirjoitti:

    sulla oikeen aiheuttaa harmaita hiuksia?

    Joka ensimmäiseksi lähettää terminaalille kyselyn, jotta kukas olet. Jos vastausta ei heru, tulee disconnect.

    No nyt mä sain sen toimimaan Expectissä, mutta vain silloin, jos ajan sitä oikeassa terminaalissa. No eteenpäin se on sekin.

    Nyt pitäs vaan keksiä, miten saan pseudoiltua homman niin, että voin ajaa cronissa sen työn.

    Äänestä

...että tosiaan saan outputin jos mulla on oikea terminaali käytössä.

Mut se serverin pää haluaa tarkistaa että mulla on vt100 käytössä. No sehän onnistuu, jos ajan skriptin käsin.

Mut ku ajan esim uudelleenohjaan ulostulon tyyliin ./skripti.sh > skripti.txt, ei homma enää toimikaan, sillä silloinhan ei ole enää terminaalia käytössä.

Onkohan olemassa mitään fake-terminaalia, johon voisin uudelleenohjata outputin ja joka osaisi vastata kysyttäessä, että "olen vt100"?

Nyt ovat kaikki neuvot kullan arvoisia!

Äänestä
  • Onnistuiskohan, että laitat jotenkin näin:

    term -c "./skripti.sh > skripti.txt"

    Eli käynnistät terminaalin komento optiolla. Etsi man-sivuilta ko. terminaalin optiot.

    Äänestä

  • *--*--* kirjoitti:

    Onnistuiskohan, että laitat jotenkin näin:

    term -c "./skripti.sh > skripti.txt"

    Eli käynnistät terminaalin komento optiolla. Etsi man-sivuilta ko. terminaalin optiot.

    Tilanne siis on, että tarkoitus on ajaa cronityönä tuo ohjelma, mikä pyörii terminaalissa ihan hyvin. Käytännössä ei siis oikeaa terminaalia ole käytössä lainkaan.

    Äänestä

  • onnistu kirjoitti:

    Tilanne siis on, että tarkoitus on ajaa cronityönä tuo ohjelma, mikä pyörii terminaalissa ihan hyvin. Käytännössä ei siis oikeaa terminaalia ole käytössä lainkaan.

    Siis eikö onnistu, jos cron käynnistää terminaalin, joka taasen käynnistää sen skriptin komento/suorita optiolla?

    Äänestä

  • *--*--* kirjoitti:

    Siis eikö onnistu, jos cron käynnistää terminaalin, joka taasen käynnistää sen skriptin komento/suorita optiolla?

    Mihin se cron sen terminaalin käynnistää, kun mitään näyttöä/terminaalia ei ole käytettävissä? Se kuolee se terminaalin käynnistys heti kättelyssä.

    Äänestä

  • näyttöä! kirjoitti:

    Mihin se cron sen terminaalin käynnistää, kun mitään näyttöä/terminaalia ei ole käytettävissä? Se kuolee se terminaalin käynnistys heti kättelyssä.

    ... niinpä siinä tietysti käy. Voihan siihen skriptiin tehdä ikuisen while-luupin ja sleep 3600 (tunti) ja ajaa sitä vaikka tekstitilan terminaalissa. (idioottimainen ratkaisu?)

    Äänestä

  • *--*--* kirjoitti:

    ... niinpä siinä tietysti käy. Voihan siihen skriptiin tehdä ikuisen while-luupin ja sleep 3600 (tunti) ja ajaa sitä vaikka tekstitilan terminaalissa. (idioottimainen ratkaisu?)

    Kas kun se telnet-serverin softa kysäsee yhteyttä ottaneelta clientilta, että mikä sä oot. Ja vaatii vastauksen tietyssä ajassa.

    Eikä oo mitään tekstitilan terminaalia olemassa, kun ei oo näyttöä. On vaan se cronityö, mikä sen skriptin ajaa.

    Äänestä

  • onnistu kirjoitti:

    Kas kun se telnet-serverin softa kysäsee yhteyttä ottaneelta clientilta, että mikä sä oot. Ja vaatii vastauksen tietyssä ajassa.

    Eikä oo mitään tekstitilan terminaalia olemassa, kun ei oo näyttöä. On vaan se cronityö, mikä sen skriptin ajaa.

    "kun ei oo näyttöä."

    näyttöä? telkkaria? monitoria? littua? eihänsitä tarvita cronin ajoon?vai tarvitaanko? min en nyt ymmärtäny sitä että mihin sitä näyttöä tarvitaan? jos siitä oli kyse. (sry öbaut mai hjumalatila :D) ehkäpä se on syynämiks en tajua .D

    Äänestä

  • puusilima_ kirjoitti:

    "kun ei oo näyttöä."

    näyttöä? telkkaria? monitoria? littua? eihänsitä tarvita cronin ajoon?vai tarvitaanko? min en nyt ymmärtäny sitä että mihin sitä näyttöä tarvitaan? jos siitä oli kyse. (sry öbaut mai hjumalatila :D) ehkäpä se on syynämiks en tajua .D

    Sovellus vaatii terminaalin. Joko se on ihan oikea näyttö tai sitten telnet-ikkuna.

    Sovellus kysyy, kuka sinä oot, ja sitten terminaali vastaa, että oon "vt100".

    Jos sen ajaa cronissa, kuka vastaa kun kysytään, että mikä sä oot? Ei ole terminaalia, joka vastaisi, eihän?

    Toivotaan ettei aamulla oo paha rapula, varsinkin jos oot työssä käyvä.

    Äänestä

  • onnistu kirjoitti:

    Kas kun se telnet-serverin softa kysäsee yhteyttä ottaneelta clientilta, että mikä sä oot. Ja vaatii vastauksen tietyssä ajassa.

    Eikä oo mitään tekstitilan terminaalia olemassa, kun ei oo näyttöä. On vaan se cronityö, mikä sen skriptin ajaa.

    No entäpä autaisiko expectin lokaalimuuttuja $expect_out , jossa pitäisi olla serverin sen hetkinen vastaus, jonka voit (ehkä) ohjata tiedostoon.

    Äänestä

  • *--*--* kirjoitti:

    No entäpä autaisiko expectin lokaalimuuttuja $expect_out , jossa pitäisi olla serverin sen hetkinen vastaus, jonka voit (ehkä) ohjata tiedostoon.

    Oon raivopäisenä yrittänyt etsiä esimerkkikoodia newsesistä, googlesta ja vaikka mistä.

    En mä osaa tehdä siihen sopivaa koodia :(. Tuohon expect_outtiin mäkin kyllä aina törmään.

    Äänestä

  • varmaankin kirjoitti:

    Oon raivopäisenä yrittänyt etsiä esimerkkikoodia newsesistä, googlesta ja vaikka mistä.

    En mä osaa tehdä siihen sopivaa koodia :(. Tuohon expect_outtiin mäkin kyllä aina törmään.

    ... dataa sä yrität sieltä purkista tallentaa? (serverin vastaukset vai? )

    Äänestä

  • alkup. kirjoitti:

    Sovellus vaatii terminaalin. Joko se on ihan oikea näyttö tai sitten telnet-ikkuna.

    Sovellus kysyy, kuka sinä oot, ja sitten terminaali vastaa, että oon "vt100".

    Jos sen ajaa cronissa, kuka vastaa kun kysytään, että mikä sä oot? Ei ole terminaalia, joka vastaisi, eihän?

    Toivotaan ettei aamulla oo paha rapula, varsinkin jos oot työssä käyvä.

    olen kyllä ihan työssä käyvä. työ vaan alkaa vasta 12 ni ei pienet aamutirsat haittaa :D

    tajusin nyt tuon ongelmasi.. en kyllä äkkiä ossoo vastatakaan :I(

    Äänestä

Entäs jos ajaa skriptin asettamalla prosessikohtainen ympäristömuuttuja, eli crontabin rivin komento-osaan "TERM=vt100 ./ohjelma" pelkän "./ohjelma" sijaan ? Tämä näin pikaisella lukemisella ongelman kuvauksesta. Crontabiin voi laittaa myös ympäristömuuttujan asetuksen omalla rivillään (man 5 crontab), jolloin se vaikuttaa käsittääkseni kaikkiin crontabissa oleviin ohjelmiin.

Skriptin alkuunkin voisi kokeilla laittaa suoraan "export TERM=vt100".

Äänestä
  • Ei noin. Siis homma menee seuraavasti:

    - telnet purnukkaan
    - purnukan telnetd kysyy, mikä olet lähettämällä sekvenssin
    - tässä vaiheessa pitäisi ohjelman osata lähettää takaisin sekvenssi, joka on vt100

    TERM-ympäristömuuttuja vain kertoo serverillä pyörivälle softalle, että olen esim vt100. Mut jos softa haluaa kysyä terminaalilta kuka olet, pitää terminaalin myös osata tähän vastata.

    Tää on kuulkaa vaikee juttu.

    Äänestä

Kommentoi aloitusta


terminaalista kirjoitti:

Tsau

Oon tehny shell-skriptin, jossa otetaan telnet yhteen purnukkaan ja ajetaan komento.

Telnet siksi, ettei purkki tue ssh:ta eikä edes rsh:ta.

Homma toimii loistavasti linuxissa itsessään kun sitä testasin, mutta ko. purnukka huomaa jostain, ettei terminaali olekaan vt100 (joka on vähimmäisvaatimus) ja heittää virheilmoituksen jälkeen siksi ulos.

Mistä se voi tietää ettei kyseessä ole oikea terminaali? Nyt oon kyllä huuli pyöreenä täällä.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu