、安装软件

yum install expect -y

、查看expect命令位置

expect命令的位置也可能是在 /usr/local/bin/expect,使用前用户应确认工具是否存在(确认方法是在root用户下运行“which expect”命令)

、expect非交互拷贝秘钥

注意这里的spawn ssh -l,因为这个脚本属于登录脚本,所以需要加ssh -l,其他的几个修改密码的脚本不要加

cat > expect.sh<<EOF  或者 expect.py  都可以
#!/usr/bin/expect
set timeout spawn ssh -l ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.92 expect "password:"
send "123\r"
interact
EOF chmod +x expect.sh ./expect.sh 或者: cat > expect.py<<EOF
#!/usr/bin/expect
set timeout spawn ssh -l ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.92 expect "password:"
send "123\r"
interact
EOF

chmod +x expect.py
./expect.py 注意:都需要使用./expect.py来执行,如果使用sh /expect.py执行就会报错;使用python expect.py根本不能执行 执行结果: [root@test1 ~]# ./expect.py
spawn ssh -l ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.92
root@192.168.0.92's password:
Last login: Wed Jan :: from test1
[root@test2 ~]# 、自动登录harbor [root@kube-node2 ~]# cat a.sh
#!/usr/bin/expect
set timeout spawn docker login 192.168.0.73: expect "Username (admin):"
send "admin\r" expect "Password:"
send "Harbor12345\r"
interact chmod +x a.sh 执行的时候必须用 ./a.sh 用 sh a.sh 就报错 下面执行的前提是设置使用sudo需要输入密码,前提设置 参照使用sudo篇。目的是为了实现expect功能。如果使用sudo 还是设置成使用sudo不需要输入密码好 、自动切换su并且执行ls命令 [root@oracledb ~]# cat login.sh
#!/usr/bin/expect set timeout
spawn su oracle -c "sudo ls"
expect "password for oracle:"
send "123\r"
interact chmod +x login.sh 执行结果: [root@oracledb ~]# ./login.sh #会卡顿一下,不影响结果
spawn su oracle -c sudo ls
[sudo] password for oracle:
.txt a.sh deplomet.yaml login.sh orcale.txt pdksh-5.2.-.el5.x86_64.rpm python3
.txt c.sh d.sh orcale output.sh pip_output.sh Python-3.6..tgz
anaconda-ks.cfg cut_new.sh d.txt orcale_output.sh output.txt pip_output.txt user.txt
a.py cut.sh lnmp.sh orcale.sh –p pip.sh 、自动创建普通用户;创建密码;切换账号;执行命令 [root@oracledb ~]# cat c.sh
#!/usr/bin/expect
set timeout
spawn passwd mysql
expect "New password:"
send "123\r"
expect "Retype new password:"
send "123\r" spawn su mysql -c "sudo ls"
expect "password for mysql:"
send "123\r"
interact chmod +x c.sh 执行的时候必须用 ./a.sh 用 sh a.sh 就报错 执行结果: [root@oracledb ~]# ./c.sh
spawn passwd mysql
Changing password for user mysql.
New password:
BAD PASSWORD: The password is shorter than characters
Retype new password: spawn su mysql -c sudo ls
[sudo] password for mysql:
anaconda-ks.cfg c.tct lnmp.sh pdksh-5.2.--mdv2011..x86_64.rpm
a.sh d.sh local.repo pdksh-5.2.-.el5.x86_64.rpm
a.txt d.txt menue.sh Python-3.6.
b.sh glibc-static-2.17-.el7.x86_64.rpm myf python.sh
compat-libstdc++--3.2.-.el6.x86_64.rpm linux.x64_11gR2_database_1of2.zip mysql.sh soft
c.sh linux.x64_11gR2_database_2of2.zip –p 报错: [root@oracledb ~]# su oracle -c "ls"
ls: cannot open directory .: Permission denied 解决:
sed = /etc/sudoers | sed -i '92a oracle ALL=(ALL) ALL' 报错:
sudo: no tty present and no askpass program specified 解决: 参照:http://blog.51cto.com/nosmoking/1595241 . 注释Defaults requiretty
Defaults requiretty修改为 #Defaults requiretty, 表示不需要控制终端。没有就不用注释
否则会出现sudo: sorry, you must have a tty to run sudo . Defaults !visiblepw 改成 Defaults visiblepw
否则会出现 sudo: no tty present and no askpass program specified grep -n "Defaults" /etc/sudoers && sed -i '55 s/!//g' /etc/sudoers 参照文档 http://www.linuxdiyf.com/linux/18381.html https://www.cnblogs.com/clnchanpin/p/6898340.html

expect自动登录的更多相关文章

  1. 解决expect自动登录,rz和sz不能使用问题

    一.问题描述: 解决expect自动登录,rz和sz不能使用问题: 二.解决方法: 1. 临时修改环境变量: 将本地的LC_CTYPE环境变量设置成en_US export LC_CTYPE=en_U ...

  2. Linux expect自动登录ssh,ftp

    [http://blog.51yip.com/linux/1462.html#] #!/usr/bin/expect -f set ip 192.168.1.201 set password meim ...

  3. Linux expect实现自动登录

    expect expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令.当然若是使用不带密码的密钥验证同样可以实现自动登录和自动远程执行命令.但当不能使用密钥验证的时候,我们就没有办法 ...

  4. iTerm2 实现 ssh 自动登录,并使用 Zmodem 实现快速传输文件

    原文链接:https://fuckcloudnative.io/posts/iterm2-auto-login/ 对于 YAML 工程师来说,我们经常需要 ssh 登录不同的服务器,每次登录时都要经历 ...

  5. expect实现自动登录

    自动登录主机(ssh) 建脚本item2login.sh,包含如下内容 #!/usr/bin/expect set timeout 30 spawn ssh -p [lindex $argv 0] [ ...

  6. linux expect详解(ssh自动登录)

    shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:&quo ...

  7. expect实现ssh自动登录

    expect实现ssh自动登录   #!/usr/local/bin/expect set PASSWD [lindex $argv 1] set IP [lindex $argv 0] set CM ...

  8. 用了一天的时间,linux下expect实现ssh自动登录服务器记,鄙视下网上各种抄来抄去残段子

    因为要对客户方的快30个项目进行特别有顺序的重启,所以不得不想办法写个脚本,网上看了不少段子.真是残缺的可以.没有一段是可以正常运行的.我来按顺序记录一下 脚本的本身 使用expect实现自动登录的脚 ...

  9. 使用expect实现自动登录的脚本

    使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ######## ...

随机推荐

  1. (一)python3.7的安装

    1.从官网https://www.python.org/下载相应版本的安装包.一般下载 executable installer,x86 表示是 32 位的,x86-64 表示 64 位的. 2.可选 ...

  2. mysql中一个字段升序,另一个字段降序

    mySql中,升序为asc,降序为desc.例如: 升序:select   *  from  表名 order by  表中的字段 asc(mysql中默认是升序排列,可不写) 降序:select   ...

  3. bzoj3097 hash killer 1——构造题

    题意 在 $u64$ 自然溢出下,请输出一串字符串和 $L$,使得对任意 $Base$ 都能找到两个长度为 $L$ 的字串的 $Hash$ 值相同. 分析 $u64$ 自然溢出等价于两个哈希值模 $2 ...

  4. LaTex编译时出错:PK font *** could not be created

    参考https://blog.csdn.net/dancing11/article/details/60978642 在用TeXworks (Miktex) 编译OSA投稿模板时,遇到错误PK fon ...

  5. 010_IAR安装

    链接:https://pan.baidu.com/s/14qZh1Gxl32dD2TWdjEYP7Q提取码:yj65 复制这段内容后打开百度网盘手机App,操作更方便哦 里面有安装说明 (一)编辑界面 ...

  6. 三十五.MySQL读写分离 MySQL多实例 、MySQL性能调优

    1.实现MySQL读写分离 搭建一主一从结构 配置maxscale代理服务器 测试分离配置   1.1 搭建一主一从结构 192.168.4.51 主 192.168.4.52 从 测试OK   1. ...

  7. leetcode解题报告(23):Pascal's Triangle

    描述 Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, R ...

  8. P3066 [USACO12DEC] 逃跑的Barn 左偏树

    P3066 逃跑的Barn 左偏树 题面 题意:给出以1号点为根的一棵有根树,问每个点的子树中与它距离小于等于l的点有多少个. 注意到答案的两个性质: 一个点的所有答案一定包含在其所有儿子的答案中 如 ...

  9. linux系列(二十二):tar命令

    1.命令格式 tar[必要参数][选择参数][文件] 2.命令功能 用来压缩和解压文件.tar本身不具有压缩功能.他是调用压缩功能实现的 3.命令参数 必要参数: -A 新增压缩文件到已存在的压缩 - ...

  10. 用Java实现自动打开浏览器在搜索框中进行搜索

    主要使用了Java的剪切板操作和Robot类 上代码: package pers.jeaven.AutoRobot.main; import java.awt.Desktop; import java ...