、安装软件

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++重温历史

    这是一篇C#开发重新学习C++的体验文章. 作为一个C#开发为什么要重新学习C++呢?因为在C#在很多业务场景需要调用一些C++编写的COM组件,如果不了解C++,那么,很容易注定是要被C++同事忽悠 ...

  2. sql server join ,inner join ,left join ,right join 的使用

    测试数据脚本 CREATE TABLE Atable ( S# INT, Sname nvarchar(32), Sage INT, Sfrom nvarchar(8) ) insert into A ...

  3. 40 | insert语句的锁为什么这么多?

    在上一篇文章中,我提到 MySQL 对自增主键锁做了优化,尽量在申请到自增 id 以后,就释放自增锁. 因此,insert 语句是一个很轻量的操作.不过,这个结论对于“普通的 insert 语句”才有 ...

  4. MySQL表结构,表空间,段,区,页,MVCC ,undo 事务槽

    索引组织表(IOT表):为什么引入索引组织表,好处在那里,组织结构特点是什么,如何创建,创建IOT的限制LIMIT. IOT是以索引的方式存储的表,表的记录存储在索引中,索引即是数据,索引的KEY为P ...

  5. pyzabbix

    pyzabbix

  6. Codeforces Global Round 4

    目录 Contest Info Solutions A. Prime Minister B. WOW Factor C. Tiles D. Prime Graph E. Archaeology F1. ...

  7. 阿里云服务器linux系统上 安装node环境

    今天将阿里云服务器重windows系统重置成了linux系统, 点击上面的实例名称,进入到 点击  更换系统盘   选择linux 的centos版本(操作前需要  停止实例) 弄好后,启动实例 下面 ...

  8. Maven项目打包时指定配置策略

    以数据库连接池的配置文件(db.properties)为例,一般的项目会有开发用数据库,测试用数据库,正式环境数据库三种配置. 以前的做法是拷贝成三份,注释掉其他了两份 # 开发用 jdbc.url ...

  9. docker 搭建registry

    Docke官方提供了Docker Hub网站来作为一个公开的集中仓库.然而,本地访问Docker Hub速度往往很慢,并且很多时候我们需要一个本地的私有仓库只供网内使用.Docker仓库实际上提供两方 ...

  10. harukaの赛前日常

    REMEMBER US. haruka是可爱的孩子. 如题,此博客用来记录我停课后的日常. Dear Diary 10.8 上午考试. T1,直接枚举每一个点最后一次被修改的情况.(100pts) T ...