모든 서버에 대해 비밀번호 없는 인증을 수행하는 관리 서버의 입력을 기반으로 Red Hat 및 SUSE 서버의 배포를 얻으려고 합니다. 오류나 출력이 발생하지 않습니다. 아래 코드는 다음과 같습니다.
version()
{
SERVERS='/HOME/servers'
read -p $'Enter the server name:\n' server_name
EXIST=`cat $SERVERS|grep -i $server_name|wc -l`
if [ $EXIST -gt 0 ];then
RELEASE1='ssh -q -o "StrictHostKeyChecking no" "$server_name" cat /etc/issue'
COUNT1=`ssh -q -o "StrictHostKeyChecking no" "$server_name" cat /etc/issue|wc -l`
VERSION1=`ssh -q -o "StrictHostKeyChecking no" "$server_name" cat /etc/issue|awk '/Red/ && /Hat/'`
COUNT2=`ssh -q -o "StrictHostKeyChecking no" "$server_name" cat /etc/issue|awk '/Red/ && /Hat/'|wc -l`
if [[ -f $RELEASE1 && -s $RELEASE1 ]];then
if [ $COUNT1 -gt 0 ];then
echo -e " $RELEASE1 "
elif [ $COUNT2 -gt 0 ];then
echo -e " $VERSION1 "
else
echo " "
fi
그렇지 않으면 ""를 에코합니다.
필리핀 제도
답변1
10행에는 백틱이 두 개 있습니다. 구문 검사를 위해 항상 다음을 사용할 수 있습니다.주택 검사
$(...)
고대 백틱 형식 대신 명령 대체를 사용하는 것이 더 좋습니다(그리고 읽기 쉽습니다) .
그런데 및 또는 /etc/issue
같은 파일을 구문 분석하는 대신 설치를 통해 릴리스 및 배포 정보를 얻습니다./etc/redhat-release
lsb_release