、安装软件

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. css全局定位内容图片自动居中

    最近在做一个资讯站点时候,因为采集的数据,图片不居中,导致界面很不美观,所以需要全局定义下图片输出时候进行居中. .content img { max-width:800px;_width:expre ...

  2. nginx 环境 thinkphp 隐藏index.php

    tp官网已经写了 http://doc.thinkphp.cn/manual/hidden_index.html 不生效 重启nginx .问题依旧 kill掉nginx进程  再启动 贴段自己的配置 ...

  3. PL/SQL 使用控制流程

    一.条件分支语句 1.if判断 IF <布尔表达式> THEN PL/SQL 和 SQL语句 END IF; 2.if else判断 IF <布尔表达式> THEN PL/SQ ...

  4. 突然萌发关于 redis 的想法(2)

    接着上篇的说.. 上一篇 : 突然萌发关于 Redis 的想法(1) 今天写商城的时候突然发现,其实商城这种 频繁操作,频繁更新, 等操作,都只需要全部存储在 Redis 中就行了, 可能有部分数据会 ...

  5. Yarn 配置阿里源

    1.查看一下当前源 yarn config get registry 2.切换为淘宝源 yarn config set registry https://registry.npm.taobao.org ...

  6. 实现返回顶部-wepy小程序-前端梳理

    <script type="text/javascript" src="http://hovertree.com/ziyuan/jquery/jquery-1.11 ...

  7. php关于mysql长连接问题

    1.当 函数 mysql_connect 的前三个参数(server username password)相同,并且第四个参数(new_link)不传递时候,重复调用 mysql_connect 是会 ...

  8. 模板 - 数据结构 - Treap

    还有人把Treap叫做树堆的,但是常用名还是叫做Treap的比较多. 不进行任何封装的,带求和操作的,一个节点存放多个元素的最普通的Treap. #include<bits/stdc++.h&g ...

  9. 牛客OI周赛10-提高组:B-Taeyeon的困惑(值域线段树)

    做法 单点加单点删,在值域线段树上直接二分就能求值前\(K\)小的和 Code #include<bits/stdc++.h> typedef long long LL; const LL ...

  10. 修改input输入框的样式

    直接上代码 <style> .input{ -web-kit-appearance:none; -moz-appearance: none; font-size:1.4em; height ...