今天小编给大家分享一下shell脚本自动输入用户名和密码如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
场景:
shell脚本中,scp和ssh连接时,自动输入用户名和密码。
解决方案:
例:
#!/bin/bash
remoteIp=IP
remoteUser=用户名
remotePw=密码
function download(){
remoteFile=$1
localDir=$2
expect << EOF
set timeout 1200;
spawn scp -r -p $remoteUser@$remoteIp:"$remoteFile" "$localDir"
expect{
"*yes/no*" {send "yes
";exp_continue}
"*Permission denied*" {exit 1}
"*password*" {send "$remotePw
";exp_continue}
"*Killed by signal 1" {exit 1}
}
EOF
}
fucntion remoteCmd(){
cmd=$1
expect << EOF
set timeout 1200;
spawn ssh $remoteUser@$remoteIp
expect{
"*yes/no*" {send "yes
";exp_continue}
"*Permission denied*" {exit 1}
"*password*" {send "$remotePw
";exp_continue}
"*$ " {send "
"}
}
expect "*$ " {send "$cmd
"}
expect "*$ " {send "exit
"}
EOF
}
remoteCmd "ls -l"