#!/usr/bin/expect -f
set port [lindex $argv 0]
spawn ps xu | grep "ssh -f -N -o ConnectTimeout=5 -D $port" | grep -v grep | awk '{ print $2 }' | xargs kill -9
expect eol
Upewniam się, że działa 100% port 1234. Ponieważ sprawdzam to ps aux | grep ssh. i zobaczyć. Więc co złego w moim kodzie? Podziękować
expect
?ssh <host> -O exit
, wiesz...Odpowiedzi:
Kiedy umieścisz to w skrypcie powłoki, $ 2 zostanie zastąpione argumentem numer 2:
Po uruchomieniu skryptu nie podałeś drugiego argumentu.
Jest to jednak oprócz tego, ponieważ chcesz, a konkretnie:
Musisz uciec od symbolu „$” za pomocą „”.
To powinno działać:
Pierwsza linia nie była konieczna, ponieważ port będzie pierwszym argumentem, którego można użyć „$ 1”, aby go pobrać.
źródło
wygląda to na skomplikowany sposób na zabicie, jeśli nie jest to wymagane
gdzie
-v port=$1
początkowa zmienna awk z 1 $index($0,"...")
przeszuka bieżące wyjście ps dla sshźródło