AIX SSH 与管道操作一衬里失败

AIX SSH 与管道操作一衬里失败

我有一艘班轮来收集错误有关每个 AIX VIO 服务器的信息,使用ssh.但下面的命令不起作用。我正在通过管道传输命令以在 VIO 服务器上的 root shell 上执行 (oem_setup_env)

ssh -padmin@VIOS1 "print \"errpt -T PERM,TEMP  -s 0610141418 -e 0701000018 \| awk -F " " '{print \$5,\$6,\$7,\$8,\$9}'\ | sort -u | sed -e "s/^/$(uname -n): /"\" | oem_setup_env"

出现以下错误。

sed: 0602-404 Function s/^/VIOS1: cannot be parsed.

答案1

你的引用全乱了。让文本oem_setup_env在本地输入并传输过来会更容易ssh

ssh admin@VIOS1 oem_setup_env << 'EOF'
errpt -T PERM,TEMP  -s 0610141418 -e 0701000018 |
    awk '{print $5,$6,$7,$8,$9}' | sort -u | sed "s/^/$(uname -n): /"
EOF

为了远程实现,使用此处文档仍然更容易(比使用print它是ksh/zsh特定的并且需要-r避免解释反斜杠)来避免两层引用转义:

ssh admin@VIOS1 'oem_setup_env << "EOF"
errpt -T PERM,TEMP  -s 0610141418 -e 0701000018 |
    awk '\''{print $5,$6,$7,$8,$9}'\'' | sort -u | sed "s/^/$(uname -n): /"
EOF'

相关内容