#!/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中
时间: 2023-08-04 12:06:28 浏览: 56
要将执行的命令和输出记录到文本文件中,您可以使用重定向符号 ">" 将输出重定向到文件中。以下是优化后的代码示例:
```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` 文件已存在,它将被覆盖。如果要将输出追加到文件末尾而不是覆盖,请使用 ">>" 符号。