我只是尝试收集有关系统的信息,特别是主机名、操作系统和SSH版本。我创建了以下脚本,它设置了主机名和操作系统,但是它不是将SSH命令设置为变量,而是执行它,我不知道为什么。
这是脚本
#! /bin/bash
set -o xtrace
rm -f ssh.log
HOSTNAME=$(hostname)
OS=$(uname -s)
SSH_VER=$(ssh -V)
echo $HOSTNAME $OS $SSH_VER > ssh.log
cat ssh.log以下是脚本的输出...
+ rm -f ssh.log
++ hostname
+ HOSTNAME=localhost.localdomain
++ uname -s
+ OS=Linux
++ ssh -V OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
+ SSH_VER=
+ echo localhost.localdomain Linux
+ cat ssh.log localhost.localdomain Linux发布于 2013-01-11 02:32:34
ssh -V不会将其输出打印到stderr,而不是stdout。要获得所需的输出,您需要更改
SSH_VER=$(ssh -V)至
SSH_VER=$(ssh -V 2>&1)这将重定向到stdout的stderr输出。
有关bash重定向的更多信息,请访问http://www.tldp.org/LDP/abs/html/io-redirection.html。
发布于 2013-01-11 02:33:26
标准错误(>&2)上的ssh -v输出,而不是标准输出(>&1)。尝试:
SSH_VER="$(ssh -V 2>&1)"
echo "$HOSTNAME $OS $SSH_VER" > ssh.log #in case it's multilinehttps://stackoverflow.com/questions/14264763
复制相似问题