shell实现自动登录的脚本
时间:2014-06-26 01:14 来源:linux.it.net.cn 作者:IT网
shell实现自动登录的脚本
复制代码代码如下:
#!/bin/bash
expect -c "
set timeout 3600;
spawn su -;
expect *assword:*;
send 123456\r;
interact;";
注解:
ssh连接远程主机时候询问密码,跟su、sudo命令的默认行为一样,是不从stdin读入数据的,据称是为安全考虑,但是有时候在脚本当中确实需要无人守值的登陆。
使用expect完成密码应答的例子:
复制代码代码如下:
#!/bin/bash
auto_login_ssh () {
expect -c "set timeout -1;
spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3};
expect *assword:*;
send -- $1\r;
interact;"; }
auto_login_ssh passwd user@host
StrictHostKeyChecking=no参数让ssh默认添加新主机的公钥指纹,也就不会出现出现是否继续yes/no的提示了。
expect很不错,上述代码基本可以达到要求了,能够当翻墙用的ssh -D自动登陆,执行远程命令等等,但是如果作为一个完全非交互的远程工具,应该说还差点意思,不能返回整个连接执行过程是否成功。
(责任编辑:IT)
shell实现自动登录的脚本
复制代码代码如下:
#!/bin/bash
expect -c " set timeout 3600; spawn su -; expect *assword:*; send 123456\r; interact;";
注解:
使用expect完成密码应答的例子:
复制代码代码如下:
#!/bin/bash
auto_login_ssh () { expect -c "set timeout -1; spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3}; expect *assword:*; send -- $1\r; interact;"; } auto_login_ssh passwd user@host StrictHostKeyChecking=no参数让ssh默认添加新主机的公钥指纹,也就不会出现出现是否继续yes/no的提示了。 expect很不错,上述代码基本可以达到要求了,能够当翻墙用的ssh -D自动登陆,执行远程命令等等,但是如果作为一个完全非交互的远程工具,应该说还差点意思,不能返回整个连接执行过程是否成功。 (责任编辑:IT) |