通过 SSH 传递时未找到命令

通过 SSH 传递时未找到命令

系统:

红帽企业 Linux 服务器版本 7.6 (Maipo),3.10.0-957.el7.x86_64

目标:

从多个服务器收集数据的配置以验证它们是否相同。

什么有效:

ssh $SERVERNAME 'yum list installed | grep -E "krb|java|libkadm|realmd|oddjob|sssd|adcli"' >> $FILENAME

什么不起作用:

ssh $SERVERNAME 'adcli info domain.name' >> $FILENAME
ssh $SERVERNAME 'realm list' >> $FILENAME

收到错误:

bash:adcli:找不到命令

bash:领域:找不到命令

完整脚本:

#!/bin/bash

DATE=`date '+%Y%m%d'`

SERVERLIST=(
#"server1.com"
"server2.com"
"server3.com"
#"server4.com"
"server5.com"
)

for SERVERNAME in ${SERVERLIST[*]}
do
        FILENAME=${SERVERNAME}-config.${DATE}
        ssh $SERVERNAME 'yum list installed | grep -E "krb|java|libkadm|realmd|oddjob|sssd|adcli"' >> $FILENAME
        ssh $SERVERNAME 'adcli info domain.name' >> $FILENAME
        ssh $SERVERNAME 'realm list' >> $FILENAME
        ssh $SERVERNAME 'cat /etc/sssd/sssd.conf' >> $FILENAME
done

答案1

GracefulRestart 几乎肯定是正确的。

不验证,将服务器上的 exec 和 ssh 之间的 $PATH 输出与服务器上的 exec 进行比较:

[server2.com]# echo $PATH [jumpbox]# ssh server2.com 'echo $PATH'

如果 ssh $PATH 环境变量中缺少“adcli”和“realm”的路径,那么最简单的修复方法就是使用完整路径。

相关内容