1.ssh非交互式连接——sshpass
常用的ssh协议在输入密码时候往往需要交互式的输入,但是使用sshpass命令就可以将登陆密码作为参数一次性的由命令行登陆。
形如:
/usr/bin/sshpass -p${password} ssh ${username}@${hostip}
对于ssh的第一次登陆,会提示:“Are you sure you want to continue connecting (yes/no)”,这时用sshpass会不好使,解决方法:
可以在ssh命令后面加上 -o StrictHostKeyChecking=no来解决。比如说上面的命令,就可以写作
/usr/bin/sshpass -p${password} ssh ${username}@${hostip} -o StrictHostKeyChecking=no
-
2.ssh非交互式连接——expect命令
expect -c "
spawn $command1;
expect {
\"yes/no\" { send \"yes\r\"; exp_continue}
\"password:\" { send \"$passwd\r\" }
}
"
或者:
spawn ssh ${username}@${ipaddr} #spawn 意思是执行命令,expect内命令,shell中不存在
expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
expect eof
-
3.scp将本地文件复制到远程主机
一般scp命令基于ssh协议的,需要ssh先登陆验证
或者使用sshpass
sshpass -p ${password} scp -P22 -q $localfile root@$remoteip:$remotefolder
-q是为了不显示拷贝进度条