Frage

Ich habe diese bash Einzeiler, die ich zur Liste Weblogic-Instanzen verwenden zusammen mit ihrem vollen paths.This läuft funktioniert gut, wenn ich es von der Shell ausgeführt.

/usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print $2}' | sed 's/weblogic.policy//' | sed 's/security\///' | sort

Ich habe versucht, dieses Skript erwartet in einem zu übernehmen

send "echo Weblogic Processes: ; /usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print \$2}' | sed 's/weblogic.policy//' | sed 's/security\///' | sort ; echo ; echo\r"

, aber ich habe diesen Fehler sed: -er Ausdruck # 1, char 13: unbekannte Option auf `s'

Bitte Hilfe

War es hilfreich?

Lösung

Ohne sorgfältige Zählen oder Testen, ich würde versuchen, einen anderen \ nach „Sicherheit \“ Hinzufügen oder möglicherweise die bestehende zu löschen.

Sie können aber auch die beiden seds miteinander kombinieren: sed -e 's/weblogic.policy//' -e 's/security\///'

Andere Tipps

Wahrscheinlich das \ Zeichen in

sed 's/security\///'

muss eine zusätzliche Flucht in Expect Zusammenhang z.

send "echo Weblogic Processes: ; /usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print \$2}' | sed 's/weblogic.policy//' | sed 's/security\\///' | sort ; echo ; echo\r"

Mit Tcl {} Operator anstelle von doppelten Anführungszeichen um die Zeichenfolge, die Sie senden möchten. Die {} Syntax in Tcl entspricht Apostroph in bash, was bedeutet, „Zeichenkette nicht mehr auswerten seinen Inhalt“.

Innerhalb der {} setzen genau das, was Sie wollen, Tcl / erwarten Sie auf den Subprozess, Zeichen für Zeichen zu senden, keine zusätzliche erforderlich unter Angabe.

Ich denke, das ist zu komplex zu einer Remote-Host senden über. Stattdessen setzt die Befehle in einem kleinen Shell-Skript und auszuführen. Auf diese Weise werden Sie nicht in Schwierigkeiten geraten, weil der Kurserweiterungsregeln, entgehen, etc.

Darüber hinaus sollten Sie ssh statt expect laufen Skripte verwenden. expect ist für die Ausführung von interaktiven Befehle wie ftp, die nicht geeignet Scripting Fähigkeiten haben.

Sie können versuchen, die einfachen Anführungszeichen zu entfernen und den Befehl erneut aus.

send "....... sed s/weblogic.policy// | sed s/security\/// ..."

Die meisten wahrscheinlich zitierte Fragen. Wenn es nicht in Ordnung, versucht, den Vorschlag von hlovdal

Inzwischen können einige Ihrer longish Befehle kombiniert werden

/usr/ucb/ps auwwx |grep weblogic| tr ' ' '\n'|awk '/security.policy/&&/domain/{gsub("weblogic.policy|security","",$2);print $2}|sort 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top