Screen wysyłanie komend

Od HLDS.pl
Skocz do: nawigacji, wyszukiwania

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