、安装软件

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. 如何在C中定义多行宏定义?

    请参阅下面的示例,其中我将交换两个变量的值. do-while(0)结构很不错 #include <stdio.h> #define swap(x,y,T) do { \ T temp = ...

  2. CSP模拟赛 number (二分+数位DP)

    题面 给定整数m,km,km,k,求出最小和最大的正整数 nnn 使得 n+1,n+2,-,2nn+1,n+2,-,2nn+1,n+2,-,2n 中恰好有 mmm 个数 在二进制下恰好有 kkk 个 ...

  3. 使用Costura.Fody插件将自己写的程序打包成一个可以独立运行的EXE文件

    我们在开发程序的时候会引用很多DLL文件,在程序完成编写后,如果不把这些引用的DLL打包,不能在其他电脑运行,那么很多同学可能在想了,能不能把我们编写好的程序打包成一个EXE文件,最好双击就能运行,当 ...

  4. javascript权威指南第20章 JSON

    //20.1 语法 //JAVASCRIPT 是对JSON数据支持的. //JSON 可以申明三种类型的值 简单值("hello world") 对象({"name&qu ...

  5. 009_Source Insight 3.5安装及使用

    链接:https://pan.baidu.com/s/1CBEhIhYtZZ6rUjq7yu4J2w提取码:qkv0 复制这段内容后打开百度网盘手机App,操作更方便哦 SourceInsight3. ...

  6. 获取登录用户ip

    public static String getIpAddr(HttpServletRequest request) { String ipAddress = null; try { ipAddres ...

  7. WiredTiger 4.1.0 发布,MongoDB 存储引擎

    WiredTiger 4.1.0 发布了.WiredTiger 是一个开源的.高性能.可伸缩的 MongoDB 数据存储引擎. 下面是一些性能比较图表: 该版本暂未提供更新内容. 下载地址: Sour ...

  8. 使用webuploader实现断点续传

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  9. learning scala dependency injection

    println("Step 1: Create a trait which knows how to do create, read, update and delete operation ...

  10. leetcode解题报告(14):Max Consecutive Ones

    描述 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: ...