2016-04-28 6 views
1

Ich bin nicht in der Lage, eine Remote-Shell-Skript auf "Admin" -Server mit Argumenten laufen.Führen Sie ein Remote-Bash-Skript mit Argumenten mit ssh

ssh [email protected] "~/bin/addautomaps $groupentry $homeentry $ticket" 

"groupentry" und "Startseiteeinstiegs" sind als

user1:*:52940:OWNER-user1 
user1  -rw,intr,hard,rsize=32768,wsize=32768 basinas01:/ifs/basinas01/home/& 

folgt das Skript bei ~/bin/addautomaps im Admin-Server befindet.

ich den Fehler zu sehen,

tput: No value for $TERM and no -T specified 

ich die Argumente auch auch sehen, werden nicht korrekt übergeben. Ich habe auch versucht mit "ssh -t ...", aber das funktioniert nicht.

+0

Versuchen Sie dies: 'ssh koliwada @ Admin-Skript -c" ~/bin/addautomaps $ groupentry $ homeeintrag $ ticket "/ dev/null' – anishsane

+0

@anishsane: Können Sie die Begründung hinter Ihrer Antwort erklären? – Inian

+1

mein schlechtes. Aus 'man script':' Die innere Hülle des Skripts ist immer interaktiv'. Daher wird der Befehl als '-c' in einer interaktiven Shell ausgeführt. – anishsane

Antwort

0

Beantworten Sie Ihre Fragen in umgekehrter Reihenfolge (oder am meisten ernst zu am wenigsten ernst).

Ihr Problem mit den Argumenten (mit Leerzeichen) nicht richtig geführt wird, ist, dass, während Sie die Befehlsfolge lokal zitieren Sie nicht sie zu zitieren, wenn sie von der entfernten Maschine tatsächlich ausgeführt werden.

Das heißt, Sie generieren eine einzige Zeichenfolge mit den erweiterten Variablen, aber nichts weist das Remote-System an, die erweiterten Werte für Leerzeichen nicht aufzuteilen.

Die Lösung dafür ist, dass Sie die Argumente innerhalb des Befehls für die Remote-Shell sowie die gesamte Zeichenfolge für ssh zitieren müssen.

Meine Antwort here könnte helfen, einige zu erklären (es ist ein ähnliches Problem).

Die tput "Problem" ist wahrscheinlich nur eine Warnung, die Sie wahrscheinlich ignorieren können, wenn Sie nicht über die kolorierte/stilisierte/etc. Ausgabe, dass tput wird wahrscheinlich verwendet, um zu erstellen. Sie könnten auch versuchen, einen Wert für $TERM auf der entfernten Seite wie ssh ... "export TERM=dumb; ..." oder etwas ähnliches zu zwingen, es zum Schweigen zu bringen.