ssh -V重定向文件不成功
时间: 2023-12-22 08:03:48 浏览: 88
如果您尝试使用以下命令将SSH版本信息重定向到文件中:
```
ssh -V > ssh_version.txt
```
但是发现文件中没有任何内容,可能是由于权限问题导致的。请尝试使用以下命令:
```
sudo ssh -V > ssh_version.txt
```
这将使用管理员权限运行SSH命令,并将输出重定向到文件中。如果仍然无法将输出重定向到文件中,请尝试在命令前加上`2>&1`,如下所示:
```
ssh -V 2>&1 > ssh_version.txt
```
这将把标准错误输出和标准输出合并到一起,并将它们一起重定向到文件中。
相关问题
ssh -V不能重定向到文件里
是的,ssh -V 命令会将版本信息输出到标准错误流,而不是标准输出流。因此,你可以使用以下命令将标准错误流重定向到文件中:
```
ssh -V 2> filename.txt
```
这将把版本信息输出到名为 filename.txt 的文件中。如果你想将标准输出和标准错误都重定向到同一个文件中,你可以使用以下命令:
```
ssh -V > filename.txt 2>&1
```
这将把标准输出和标准错误都重定向到名为 filename.txt 的文件中。
#!/bin/sh ssh_check() { user="Administrator" password="Admin@9000" ip="10.160.124.66" if [ ping_check "$ip" = false ] then echo 1 exit 1 fi /usr/bin/expect <<-EOF set timeout 5 spawn bash -c "ssh $user@$ip &>/dev/null" expect { "yes/no" {set timeout -1; send "yes\r";exp_continue} "password" {send "$password\r"} } expect "Administrator@iRM:/#" send "exit\r" #expect "iBMC:/->" #send "exit\r" expect eof EOF echo $? } ping_check() { ipaddr="10.160.124.66" ping -c 1 $ipaddr >/dev/null if [ $? -eq 0 ] then echo "true" else echo "false" fi } ssh_run() { user="Administrator" password="Admin@9000" ip="10.160.124.66" node_num="$i" /usr/bin/expect <<-EOF set timeout -1 spawn ssh $user@$ip expect { "yes/no" {set timeout -1; send "yes\r";exp_continue} "password" {send "$password\r"} } expect "Administrator@iRM:/#" send "ipmcget -d ipinfo \r" expect "Administrator@iRM:/#" send "ipmcset -d serialnode -v $node_num \r" expect "Administrator@iRM:/#" send "exit\r" EOF } for (( i = 1; i < 4; i++ )); do echo "-------------------open---------------------------" echo $i node_num=$i ssh_check ssh_run echo "-------------------close---------------------------" done 优化一下如何把执行的命令等记录到文本2.log中
要将执行的命令和输出记录到文本文件中,您可以使用重定向符号 ">" 将输出重定向到文件中。以下是优化后的代码示例:
```shell
#!/bin/sh
ssh_check()
{
user="Administrator"
password="Admin@9000"
ip="10.160.124.66"
if [ $(ping_check "$ip") = "false" ]
then
echo 1
exit 1
fi
/usr/bin/expect <<-EOF
set timeout 5
spawn bash -c "ssh $user@$ip &>/dev/null"
expect {
"yes/no" {set timeout -1; send "yes\r";exp_continue}
"password" {send "$password\r"}
}
expect "Administrator@iRM:/#"
send "exit\r"
expect eof
EOF
echo $?
}
ping_check()
{
ipaddr="10.160.124.66"
ping -c 1 $ipaddr >/dev/null
if [ $? -eq 0 ]
then
echo "true"
else
echo "false"
fi
}
ssh_run()
{
user="Administrator"
password="Admin@9000"
ip="10.160.124.66"
node_num="$i"
/usr/bin/expect <<-EOF
set timeout -1
spawn ssh $user@$ip
expect {
"yes/no" {set timeout -1; send "yes\r";exp_continue}
"password" {send "$password\r"}
}
expect "Administrator@iRM:/#"
send "ipmcget -d ipinfo \r"
expect "Administrator@iRM:/#"
send "ipmcset -d serialnode -v $node_num \r"
expect "Administrator@iRM:/#"
send "exit\r"
EOF
}
for (( i = 1; i < 4; i++ )); do
echo "-------------------open---------------------------"
echo $i
node_num=$i
ssh_check
ssh_run
echo "-------------------close---------------------------"
done > 2.log
```
这样,执行的命令和输出将被重定向到名为 `2.log` 的文本文件中。请注意,如果 `2.log` 文件已存在,它将被覆盖。如果要将输出追加到文件末尾而不是覆盖,请使用 ">>" 符号。
阅读全文