Commando naar screen sturen?

Pagina: 1
Acties:

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 21-02 19:22

Erhnam

het Hardware-Hondje :]

Topicstarter
Ik vroeg mij af of het mogelijk is een commando naar een draaiende screen te sturen. Volgens de Manual is het mogelijk met -X maar ik kom er helaas niet uit. Ik heb namelijk meerdere screens draaien:

root@tcgo3:/halflife/hlds_l/cstrike# screen -ls
There are screens on:
294.server1 (Detached)
296.server3 (Detached)
298.server4 (Detached)


Als ik vervolgens het volgende commando geef:

root@tcgo3:/halflife/hlds_l/cstrike# screen -X quit -S server1

Komt er het volgende in beeld: Use -S to specify a session.
root@tcgo3:/halflife/hlds_l/cstrike#


Weet iemand hoe het wel goed kan? De manual is namelijk zeer onduidelijk.

http://www.xbmcfreak.nl/


Verwijderd

Gewoon je screen attachen?
screen -r om em te attachen (of -x alsie ergens anders al attached is) maar kies wel je goeie PID als je meerdere screens hebt.

En de manual is een prima ding hoor

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 21-02 19:22

Erhnam

het Hardware-Hondje :]

Topicstarter
attachen wil ik niet, ik wil het namelijk iedere nacht automatisch laten gebeuren anders moet ik om 6 uur 20 screens attachen..

Het mooiste zou ik vinden als ik iets kan maken dat die alle commando's uit een file pakt en die door stuurt:

cat /root/file > -> en dan naar de screen

Iemand een idee?

[ Voor 45% gewijzigd door Erhnam op 28-04-2003 11:54 ]

http://www.xbmcfreak.nl/


Verwijderd

grrr, RTFM maar ff voor -X dan (hoofdletter X ja)

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 21-02 19:22

Erhnam

het Hardware-Hondje :]

Topicstarter
code:
1
2
3
4
5
       -X   Send the specified command to a running  screen  ses-
        sion.  You can use the -d or -r option to tell screen
        to look only for attached  or  detached  screen  ses-
        sions.  Note  that  this  command doesn't work if the
        session is password protected.


Als het zo makkelijk was had ik deze topic ook niet geopend. Maar dit is gewoon te beperkt. Er is ook nergens een voorbeeld te vinden met hoe je dit precies doet. Ik heb ook al geprobeerd achter de -S optie de pid neer te zetten maar hij blijft met het zelfde op de proppen komen.

http://www.xbmcfreak.nl/


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Je moet de volgorde veranderen, jij doet
screen -X quit -S server1
maar je moet
screen -X -S server1 quit
doen.
Dus eerst de server specificeren, en dan het commando.

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 21-02 19:22

Erhnam

het Hardware-Hondje :]

Topicstarter
blaataaps schreef op 28 April 2003 @ 11:51:
Je moet de volgorde veranderen, jij doet
screen -X quit -S server1
maar je moet
screen -X -S server1 quit
doen.
Dus eerst de server specificeren, en dan het commando.
Okee bedankt voor je antwoord! Dit werkt. Nu heb ik nog een klein vraagje:

Hoe zou je er nu voor kunnen zorgen dat 'quit' wordt vervangen door het alle regels uit het script '/root/example' om maar een voorbeeld te noemen..

http://www.xbmcfreak.nl/


Verwijderd

screen -X -S server1 `cat /root/example` (backquotes)

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 21-02 19:22

Erhnam

het Hardware-Hondje :]

Topicstarter
Verwijderd schreef op 28 April 2003 @ 12:19:
screen -X -S server1 `cat /root/example` (backquotes)
Okee bedankt voor je antwoord. Ik heb het geprobeerd en het werkt ongeveer op die manier nog niet precies zoals ik precies wil. Ik zal even mijn situatie uitleggen. Ik heb 20 cs servers op een brute server draaien. Deze draaien allemaal in screen. Iedere server heeft een eigen config. (server.cfg) Nu wil ik de inhoud gekopieerd hebben naar de screen.

screen -X -S server1 'hostname "test"'

Veranderd de hostname van de server in start. In het config script staan precies dat soort regels. Ik heb geprobeerd met:

screen -X -S server1 'cat /root/example.cfg' of met schuine haakjes maar dit werkt helaas niet.

De uiteindelijke bedoeling is dat ieder kwartier bv de inhoud van de scripten naar de servers wordt doorgestuurd, zodat een restart tot het verleden behoort.

Iemand een idee?

http://www.xbmcfreak.nl/


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Jij wil er commando's heensturen alsof je in de screen zelf aan het typen bent? Dat kan bij mijn weten niet.
En het zijn trouwens geen schuine haakjes, maar backquotes, ` dus, en niet ' zoals je in je post schrijft.

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 21-02 19:22

Erhnam

het Hardware-Hondje :]

Topicstarter
blaataaps schreef op 29 april 2003 @ 10:34:
Jij wil er commando's heensturen alsof je in de screen zelf aan het typen bent? Dat kan bij mijn weten niet.
En het zijn trouwens geen schuine haakjes, maar backquotes, ` dus, en niet ' zoals je in je post schrijft.
Met ` had ik het ook al geprobeerd maar dat werkte niet. Een quit doorsturen als commando lukte wel. Een lijst met commando's vanuit een file nog niet. Misschien weet iemand anders hoe dat moet?

http://www.xbmcfreak.nl/


  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Erhnam schreef op 29 april 2003 @ 11:01:
Met ` had ik het ook al geprobeerd maar dat werkte niet. Een quit doorsturen als commando lukte wel. Een lijst met commando's vanuit een file nog niet. Misschien
weet iemand anders hoe dat moet?
Je kunt aan de hand van de Advanced Bash-scripting guide een bashscript inelkaar zetten dat elke regel van je configfile uitleest, en deze een-voor-een naar je screen stuurt. Op zich niet zo heel erg moeilijk, het hoeft trouwens geeneens in bash, bijna elke taal bezit deze functie.

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Erhnam schreef op 29 April 2003 @ 11:01:
[...]


Met ` had ik het ook al geprobeerd maar dat werkte niet. Een quit doorsturen als commando lukte wel. Een lijst met commando's vanuit een file nog niet. Misschien weet iemand anders hoe dat moet?
Die quit ging naar je screen, niet naar je halflife server, zoals ik al eerder zei, voor zover ik weet kan screen niet wat jij wilt.

  • ggvw
  • Registratie: September 2001
  • Laatst online: 15-12-2024
Ben al weer wat aan de late kant, maar ....

Het is dus wél mogelijk om naar een bestaande screen commando's te sturen. Het is alleen nogal gaar gedocumenteerd in de manual.

Het magische woordje is "stuff".

Om bijvoorbeeld een directory listing te doen in een bestaande screen:
code:
1
2
ggvw@Debian ~> screen -dmS testscreen
ggvw@Debian ~> screen -r testscreen -X -p0 stuff 'ls -l <CTRL V><CTRL M>'


voor het resultaat:
code:
1
ggvw@Debian ~>screen -r testscreen


Vergeet -p0 niet! Als je -p0 vergeet kan je alleen stuff 'ls -l' sturen naar de screen als deze al een keer attached is geweest 8)7 :(

Ook niet vergeten om een carriage return mee te zenden, anders wordt hetgeen dat achter 'stuff' staat wel ingetypt in de opgegeven screen, maar niet uitgevoerd.

In de shell doe je dat door <CTRL V><CTRL M> in te drukken.

In een perl script heb ik het voor elkaar gekregen met \n en \r:
code:
1
system("screen -r testscreen -p0 -X stuff 'ls -l\r\r\n\n'");

In plaats van het maken van een directory listing in een bestaande screen kan je ook andere zooi ernaartoe sturen. Om bijvoorbeeld een lopend proces in een screen af te breken:

code:
1
ggvw@Debian ~>screen -r testscreen -X -p0 stuff '<CTRL V><CTRL C>'


Misschien handig om dit in een FAQ te zetten? Scheelt anderen veel tijd.
Pagina: 1