shell 调用 expect 登陆上远程服务器后执行不了命令
时间:2011-07-14
来源:互联网
exec.sh代码如下:
复制代码
login.exp代码如下:
复制代码
现在问题是:我执行exec.sh后,我想在登陆完成后执行修改远程服务器的root密码,但是以上代码"passwd root --stdin < password.txt”最后是在本地执行的作用,如何让其在远程执行呢???
- #!/bin/bash
- server=10.10.10.100
- for name in root
- do
- ./login.exp $name $server
- passwd root --stdin < password.txt
- done
- #!/usr/bin/expect -f
- set name [lindex $argv 0]
- set server [lindex $argv 1]
- spawn ssh $name@$server;
- expect "Password:";
- send "123456\r";
- interact;
作者: fengfeng919 发布时间: 2011-07-14
应该有人使用过这方面的需求,给优化一下,我不知道“passwd root --stdin < password.txt”这个修改动作应该放在哪里,感谢。
作者: fengfeng919 发布时间: 2011-07-14
回复 fengfeng919
不是这么弄的
不是这么弄的
作者: wtuter 发布时间: 2011-07-14
QUOTE:
回复 fengfeng919
不是这么弄的
wtuter 发表于 2011-07-14 09:43
不是这么弄的
wtuter 发表于 2011-07-14 09:43
你是说这方法没办法实现吗?
作者: fengfeng919 发布时间: 2011-07-14
能实现的,我把动作放错地方了,把login.exp的代码改为如下就好了:
复制代码
- #!/usr/bin/expect -f
- set name [lindex $argv 0]
- set server [lindex $argv 1]
- spawn ssh $name@$server;
- expect "password:";
- send “123456\r";
- send "passwd root\r"
- expect "New UNIX password:"
- send "654321\r"
- expect "Retype new UNIX password:"
- send "654321\r"
- interact;
作者: fengfeng919 发布时间: 2011-07-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28