Screen wysyłanie komend

Od HLDS.pl
(Różnice między wersjami)
Skocz do: nawigacji, wyszukiwania
(Drobne.)
(Inne podejscie: skrypt co robi nam laske ;D)
 
(Nie pokazano 2 wersji utworzonych przez jednego użytkownika)
Linia 1: Linia 1:
 +
=Readreg=
 
Wysyłanie komend z pliku do [[screen]]a, tak jakby to pisał user. Działa przynajmniej z tego samego usera.
 
Wysyłanie komend z pliku do [[screen]]a, tak jakby to pisał user. Działa przynajmniej z tego samego usera.
 
Przetestowałem pracując w tym samym katalogu w [[Shell|shellu]] z którego odpalam screena do uruchomienia serwera, ale wydaje mi się ze to nie powinno mieć znaczenia.
 
Przetestowałem pracując w tym samym katalogu w [[Shell|shellu]] z którego odpalam screena do uruchomienia serwera, ale wydaje mi się ze to nie powinno mieć znaczenia.
Linia 14: Linia 15:
  
 
'''Notka''' czasem trzeba zamienić ''process'' na ''paste'' (''zależy od sytemu operacyjnego'').
 
'''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=
 +
<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