免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6171 | 回复: 7
打印 上一主题 下一主题

[系统管理] 求助:expect实现scp交互,密码不正确无法匹配退出 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-07-08 17:48 |只看该作者 |倒序浏览
本帖最后由 飘动de心 于 2016-07-11 10:35 编辑

使用expect实现scp交互,如果密码错误应该要怎么处理?
正常scp,如果密码错误会提示“Permission denied, please try again.”,然后还是要继续输入密码,如下
  1. root@localhost's password:
  2. Permission denied, please try again.
  3. root@lcoalhost's password:
复制代码
请问我还可以捕捉*Permission denied, please try again*么,他是上一行的提示,这样正确么

我尝试添加了\"Permission denied, please try again.\" exit,虽然密码错误脚本会退出,但是还是停留在远程机器的命令行上,有什么可以直接取消远程scp 打印密码错误
  1. [root@localhost test]# ./remote_scp 192.168.1.10 123456
  2. expect: spawn id exp6 not open
  3.     while executing
  4. "expect eof "
  5. spawn ssh root@192.168.1.10
  6. root@192.168.1.10's password:
  7. Permission denied, please try again.
  8. root@192.168.1.10's password: ^[[A^[[A^H^H^H^H^H^C[root@localhost test]# ^C
复制代码
附实现脚本
  1. ...
  2. expect -c "
  3.         set timeout 1800;
  4.         spawn scp -r $dir root@$ip_addr:~/
  5.         expect {
  6.                 \"(yes/no)?\" {send \"yes\r\";exp_continue}
  7.                 \"*password:\" {send \"$passwd\r\"}
  8.         }
  9.         expect eof " >>$log
  10. ...
复制代码

论坛徽章:
6
15-16赛季CBA联赛之新疆
日期:2016-03-22 22:34:5915-16赛季CBA联赛之山东
日期:2016-04-11 09:08:41程序设计版块每日发帖之星
日期:2016-06-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-19 06:20:00每日论坛发贴之星
日期:2016-07-19 06:20:0015-16赛季CBA联赛之青岛
日期:2016-07-20 22:44:17
2 [报告]
发表于 2016-07-09 05:02 |只看该作者
要不要试试 ssh无密码登录
就不用管 密码不正确时处理方法 了

论坛徽章:
10
15-16赛季CBA联赛之同曦
日期:2016-06-11 19:22:4115-16赛季CBA联赛之深圳
日期:2020-05-31 16:13:5615-16赛季CBA联赛之同曦
日期:2020-01-28 12:42:47每日论坛发贴之星
日期:2016-08-09 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00每日论坛发贴之星
日期:2016-07-12 06:20:00程序设计版块每日发帖之星
日期:2016-07-12 06:20:00程序设计版块每日发帖之星
日期:2016-07-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-04 06:20:0015-16赛季CBA联赛之佛山
日期:2021-02-26 09:33:41
3 [报告]
发表于 2016-07-09 09:26 |只看该作者
出现那个直接退出就好了、、、你再输也登不上去

论坛徽章:
0
4 [报告]
发表于 2016-07-11 10:22 |只看该作者
本帖最后由 飘动de心 于 2016-07-11 10:22 编辑

改成这样还是没用啊
       spawn scp -r $dir root@$ip_addr:~/
        expect {
                \"(yes/no)?\" {send \"yes\r\";exp_continue}
                \"*password:\" {send \"$passwd\r\";exp_continue}
                \“Permission denied, please try again.\" exit
        }
        expect eof "


终端还提示expect没匹配到
  1. expect: spawn id exp6 not open
  2.     while executing
  3. "expect eof "
  4. spawn ssh root@192.168.1.10
  5. root@192.168.1.10's password:
  6. Permission denied, please try again.
  7. root@192.168.1.10's password:
复制代码

论坛徽章:
1
未羊
日期:2014-06-16 09:14:34
5 [报告]
发表于 2016-07-11 10:32 |只看该作者
有个工具叫sshpass

论坛徽章:
0
6 [报告]
发表于 2016-07-11 10:34 |只看该作者
这个暂不考虑,谢谢回复 5# jimmy14k


   

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
7 [报告]
发表于 2016-07-14 12:40 |只看该作者
  1.     #!/usr/bin/expect
  2.     set timeout 60
  3.     set pwd "123456"
  4.     spawn ssh  172.18.0.1
  5.            expect {
  6.                     "not know" {send_user "[exec echo \"not know\"]";exit}
  7.                     "(yes/no)?" {send "yes\r";exp_continue}
  8.                     "password:" {send  "$pwd\r"}
  9.                     "Permission denied, please try again." {
  10.                         send_user "[exec echo \"Error:Password is wrong\"]"
  11.                         exit  }

  12. expect eof
  13.                     }

  14. expect "*#"
  15. send "/etc/init.d/keepalived stop\r"
  16. send "sh ./chg_keepalived.sh &\r"
  17. send "\r"
  18. send "exit\r"
  19. expect eof
复制代码
你参考下?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
8 [报告]
发表于 2016-07-17 15:17 |只看该作者

  1. expect {
  2.                 \"(yes/no)?\" {send \"yes\r\";exp_continue}
  3.                 \"*password:\" {send \"$passwd\r\" }
  4. }
  5. expect {
  6.                 \“Permission denied, please try again.\" exit
  7.                 eof
  8. }
复制代码
不是一个步骤的你在一起expect ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP