Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: vilpas - 20.02.12 - klo:22.18
-
Morjens tossa tuommoista minecraft palvelinta pyörittelen kavereitten kanssa ja jonkinlainen automaatio ois mukava päivityksissä sun muussa
miten saan echo komennon printtaamaan minecraft ohjelman sisällä screenissä?
bashilla kirjoittelen tätä koodia.
ja mihin laitetaan käynnistyksen ja sammutuksen yhteydessä ajettavat skriptit?
ubuntu 10.04 server
almost newbie
-
En nyt ole ihan selvillä mitä tarkoitit? Oliko tarkoitus onnistua lähettämään tekstiä sinne screen istuntoon?
Screenin man sivulta jota pystyt itsekin lukemaan komentamalla 'man screen' löysin seuraavaa:
-X Send the specified command to a running screen session. You can
use the -d or -r option to tell screen to look only for attached
or detached screen sessions. Note that this command doesn't work
if the session is password protected.
Alempana noita -X vivun perään laitettavia komentoja kuten stuff:
screen -X stuff "boo"
tulostaa avonaiseen screenin istuntoon komentokehotteeseen tekstin boo (ei suorita tai mitään sellaista). Tästä varmaan voi kehitellä jotain. En selvittänyt miten tuon saisi "painamaan" entteriä.
-
En nyt ole ihan selvillä mitä tarkoitit? Oliko tarkoitus onnistua lähettämään tekstiä sinne screen istuntoon?
Screenin man sivulta jota pystyt itsekin lukemaan komentamalla 'man screen' löysin seuraavaa:
-X Send the specified command to a running screen session. You can
use the -d or -r option to tell screen to look only for attached
or detached screen sessions. Note that this command doesn't work
if the session is password protected.
Alempana noita -X vivun perään laitettavia komentoja kuten stuff:
screen -X stuff "boo"
tulostaa avonaiseen screenin istuntoon komentokehotteeseen tekstin boo (ei suorita tai mitään sellaista). Tästä varmaan voi kehitellä jotain. En selvittänyt miten tuon saisi "painamaan" entteriä.
juuri tätä tarkoitin mutta tuo enter on nyt se ongelma :-\
-
juuri tätä tarkoitin mutta tuo enter on nyt se ongelma :-\
Ei hätää, eiköhän senkin voi tehdä. En vaan joutanut selvittelemään eilen.
Tämmöisen löysin: http://aperiodic.net/screen/faq
How to send a command to a window in a running screen session from the commandline?
(We assume that we have a screen session with the name “test” running with a window 0.)
screen -S test -p 0 -X stuff 'top^M'
The '^M' needs to be literal so precede it with '^V' in bash, for example. Or you can use the (four characters) '\012' (which works for bash only in a script).
Mutta en saanut tuota toimimaan. Lähettää aina merkkeinä tuon ^M:n.
-
miten saan echo komennon printtaamaan minecraft ohjelman sisällä screenissä?
bashilla kirjoittelen tätä koodia.
Tarkoitatko että kun päällä olevassa minecraft ohjelmassa tapahtuu jokin tietty toimnto, sen seurauksena
suoritettaisiin echo?
Ellei minicraftissa kyseistä toimintoa ole valmiina sen saa siihen ainoastaan muuttamalla lähdekoodia ja kääntämällä oman version.
-
hieman huonosti muotoiltu otsiko.
mutta tarkoitus olisi että tietyin väliajoin käynnistyvä bash ohjelma kirjoittaa minecraftin screen ikunaan jotain koodia esimerkiksi kun palvelinta sammutetaan.
-
Miten olisi:
echo -e "\012\012Jotain tekstiä tänne\012\012" > /dev/pts/1
Nuo "\012" ovat rivin vaihtoja, "dev/pts/<jokin_numero>" ovat screenejä.
screen -m
avaa kokeiluscreenin tyhjänä jos testailet.
-
toimiihan nuo muttei entteriä osaa painaa?
Miten olisi:
echo -e "\012\012Jotain tekstiä tänne\012\012" > /dev/pts/1
Nuo "\012" ovat rivin vaihtoja, "dev/pts/<jokin_numero>" ovat screenejä.
screen -m
avaa kokeiluscreenin tyhjänä jos testailet.
-
Löysit mielenkiintoisen asian. Sinne saa lähetettyä sekä "LF" (oct 012) että "CR" (oct 015) koodit helposti. Pääte tulkitsee nuo päätteen ohjauskoodeiksi niin että kohdistin liikkuu niiden mukaisesti. Kokeilin myös päätteen ohjausta "Esc" -koodeilla, pääte vaihtaa edustaväriä, resetoi, ym. helposti.
Tuo ei kuitenkaan ollut mitä haluat eli että jokin "painaisi Enter" siellä päätteellä. Noissa "eskeippikoodeissa" löytyy myös "numeropadin Enter" mutta pääte ei tottele tuota koodia. Heräsi jopa epäilys onko tuo "Enter": in painaminen päätteessä etänä tarkoituksella estetty --- hieman vaikeampi käynnistää mielivaltaisia ohjelmia päätteessä kun ei voi painaa "ohjelmia käynnistävää Enter": iä. :)
En heti löytänyt dokumenttia/selitystä tuosta, ehkä joku muu tietää tuon asian logiikan paremmin ?
Tuossa on yksi peliäsi koskeva linkki:
http://unix.stackexchange.com/questions/5847/why-is-screen-seemingly-doing-nothing-with-commands-passed-with-x (http://unix.stackexchange.com/questions/5847/why-is-screen-seemingly-doing-nothing-with-commands-passed-with-x)
-
Löysin vahvistuksen ajatukselleni: Se "Enter": in painaminen etänä on tahallisesti estetty. Tuo olisi muuten tietoturvareikä. Näytöllä näytettävän datan lähettämiselle ei ole estettä.
Tässä viite:
http://stackoverflow.com/questions/8677623/linux-pseudo-terminals-executing-string-sent-from-one-terminal-in-another (http://stackoverflow.com/questions/8677623/linux-pseudo-terminals-executing-string-sent-from-one-terminal-in-another)
-
eli minulla ei ole mahdollisuutta ohjata screen istuntoa bash ohjelmasta?
-
eli minulla ei ole mahdollisuutta ohjata screen istuntoa bash ohjelmasta?
Kokeilitko tuon ylempänä olevan linkin asiat eli ottaako Minecraft vastaan komentoja tuota kautta (vaikka päätteelle suoraan niitä ei saa ajoon) ?