Screen wysyłanie komend

Od HLDS.pl
(Różnice między wersjami)
Skocz do: nawigacji, wyszukiwania
(Inne podejscie)
(Inne podejscie: skrypt co robi nam laske ;D)
 
Linia 22: Linia 22:
 
  screen -S cs -X readbuf /tmp/buff
 
  screen -S cs -X readbuf /tmp/buff
 
  screen -S cs -X paste .
 
  screen -S cs -X paste .
 +
 +
 +
=Skrypt co robi to za nas=
 +
<bash>
 +
#!/bin/bash
 +
 +
if [ $# -lt 2 ];then
 +
echo "Usage $0 <screen name> <command>"
 +
exit
 +
fi
 +
MPID=$$;
 +
 +
DEST=$1;
 +
shift
 +
 +
#echo DEST $DEST
 +
#echo MPID $MPID
 +
 +
screen -q -S $DEST -X number 2>&1 > /dev/null
 +
TESTDEST=$?
 +
 +
if [ $TESTDEST -ne 0 ]; then
 +
    echo "Wrond screen name."
 +
exit 1
 +
fi
 +
echo "COMMAND $*"
 +
 +
echo $* > /tmp/$MPID.buff
 +
screen -S $DEST -X readbuf /tmp/$MPID.buff
 +
screen -S $DEST -X paste .
 +
rm  /tmp/$MPID.buff
 +
</bash>
 +
 +
*nazwac to np screenfeed.sh i wywolywac z conajmnije dwoma parametrami, pierwszy to nazwa screena, a drugi to komenda
 +
*wpisywanie prostej komendy
 +
./screenfeed.sh cs quit
 +
 +
*wpisywanie komendy z cudzyslowami i srednikami (trzeba dodac backslashe)
 +
 +
./screenfeed.sh cs hostname \"dupa jasiu\" \; map de_dust
  
 
== Zobacz też ==
 
== Zobacz też ==

Aktualna wersja na dzień 00:42, 24 sty 2010

Spis treści

Readreg

Wysyłanie komend z pliku do screena, tak jakby to pisał user. Działa przynajmniej z tego samego usera. Przetestowałem pracując w tym samym katalogu w shellu z którego odpalam screena do uruchomienia serwera, ale wydaje mi się ze to nie powinno mieć znaczenia.

Zakładamy, ze nasz screen nazywa się cs (stworzony screen -S cs -A -d ./hlds_run ...)

  • Najpierw do pliku bufor wprowadzamy, co ma być wstukane do konsoli:
echo "changelevel de_dust" > bufor
  • Teraz każemy screenowi przeczytać zawartość pliku bufor i wprowadzić do swojego rejestru numer 1:
screen -S cs -X readreg 1 bufor
  • Następnie wyprowadzamy z bufora do konsoli programu:
screen -S cs -X process 1

Notka czasem trzeba zamienić process na paste (zależy od sytemu operacyjnego).

Inne podejscie

Oczywiscie najlepiej zmienic sciezke, aby jakis inny proces sie nie pierniczyl do bufora ;)

echo "ls -la " > /tmp/buff
screen -S cs -X readbuf /tmp/buff
screen -S cs -X paste .


Skrypt co robi to za nas

#!/bin/bash
 
if [ $# -lt 2 ];then
echo "Usage $0 <screen name> <command>"
exit
fi
MPID=$$;
 
DEST=$1;
shift
 
#echo DEST $DEST
#echo MPID $MPID
 
screen -q -S $DEST -X number 2>&1 > /dev/null
TESTDEST=$?
 
if [ $TESTDEST -ne 0 ]; then
    echo "Wrond screen name."
exit 1
fi
echo "COMMAND $*"
 
echo $* > /tmp/$MPID.buff
screen -S $DEST -X readbuf /tmp/$MPID.buff
screen -S $DEST -X paste .
rm  /tmp/$MPID.buff
  • nazwac to np screenfeed.sh i wywolywac z conajmnije dwoma parametrami, pierwszy to nazwa screena, a drugi to komenda
  • wpisywanie prostej komendy
./screenfeed.sh cs quit
  • wpisywanie komendy z cudzyslowami i srednikami (trzeba dodac backslashe)
./screenfeed.sh cs hostname \"dupa jasiu\" \; map de_dust

Zobacz też

Osobiste
Przestrzenie nazw
Warianty
Działania
HLDS.pl - Menu:
Inne
IRC
Inne sekcje:
Znajomi:
Narzędzia