我正在尝试通过SSH连接到另一台计算机,并将其IP地址和主机名插入一个变量。
但是,当我回声它的时候,它似乎是空的。
我已经尝试了其他帖子的答案,但是并不能解决我的问题。我不知道是什么问题。
#!/bin/bash
FILE=/home/admin/Vishal/output.txt
input=host.txt
while IFS= read -r line
do
echo "$line"
if [ $line = $HOSTNAME ]
then
ip=`hostname -i`
domain=`hostname -A`
host=`hostname`
sudo echo $ip $domain $line localhost >> $FILE
else
output=$(ssh -i -t admin@$line << "ENDSSH"
ip2=`hostname -i`
domain2=`hostname -A`
host2=`hostname`
ENDSSH
)
echo $output
fi
done <"$input"
输入文件包含主机名列表
变量 FILE 包含要存储结果的文件的路径。
可变的输出是我要存储结果的那个。
注意:如果不需要ssh,该脚本适用于第一部分。
答案 0 :(得分:1)
仅此命令与您的问题有关:
output=$(ssh -i -t admin@$line << "ENDSSH"
ip2=`hostname -i`
domain2=`hostname -A`
host2=`hostname`
ENDSSH
)
该命令设置了一些变量,但未产生任何输出,因此,预计output
不包含您的值。
如果您确实希望三行具有hostname
相关的值,那么类似这样的简单事情应该起作用
output=$(ssh admin@$line "hostname -i; hostname -A; hostname")