背景:

在一些shell脚本中需要用到普通用户切换root用户并执行相应的命令,不需人为干预。

实现:

使用linux的expect工具实现。

代码:

  1 #!/usr/bin/expect2 spawn su3 expect "Passward:"4 send "******\r"5 send "ls\n"6 #send "docker exec -it   e61f16df7591   /bin/bash /usr/local/tomcat/1.sh\n"7 send "docker exec -it   e61f16df7591   /usr/bin/python /usr/local/tomcat/2.py\n"8 interact

代码释义:

第二行  spwan 捕捉切换用户命令

第三行:expect捕捉终端的对话信息,eg:如下图

第四行:send 写入你的密码明文

第五~七行:send 写入你需要执行的命令

第八行:约定结束交互后,所处位置为脚本内最后所在位置

注意:该脚本执行不能指定解释器,只能通过绝对路径的方式执行命令

/root/1.sh 或者./1.sh,无法于shell混写

进阶:

set timeout -1    #注意,此处为设置永不超时

shell混合代码:

执行使用sh expect.sh

#!/bin/bash
day=`date +%Y%m%d -d "-1 days"`expect <<END
set timeout -1
spawn scp -r /root/2.txt root@192.168.148:/tmp/1.txt
expect "Password:"
send "*****\r"    #密码
send "ls\r"
expect eof
END
#interact

expect eof    #表示结束交互,会返回到原终端所在位置,也就是退回到执行脚本的用户。

普通用户切换root用户实现自动输入密码相关推荐

  1. AWS亚马逊主机ec2用户切换root用户

    AWS亚马逊主机切换root用户 使用证书文件登录ec2用户 ssh -i "你的实例密钥如guoye-hongkong.pem" centos@xxxx.compute.amaz ...

  2. centos7错误:can‘t create 事务 lock on /var/lib/rpm/.rpm.lock (权限不够)切换root用户

    执行删除操作时出现错误:权限不够 1.使用sudo命令 centOS7上普通用户切换root用户,相互切换 当前普通用户登录,想要切换为root用户,需要输入命令 su 需要输入root密码.输入时候 ...

  3. 设置普通用户执行docker命令,执行docker命令无需输入密码或者切换root用户

    每次执行docker命令都要输入密码或者切换root用户,非常不方便,尤其是在shell脚本中就更麻烦了,一起来解决这个问题: 1. 创建名为docker的组,如果之前已经有该组就会提示已存在: su ...

  4. Shell脚本切换root用户或获取root权限

    前言 需求:Shell脚本不能通过root用户执行,只能通过普通用户执行.但是脚本中的某些命令需要时root权限. 想法:在执行需要root权限的命令时切换到root用户 或者 拿到root权限. 一 ...

  5. linux禁止普通用户切换,Linux系统如何禁止普通用户切换root?

    Linux系统如何禁止普通用户切换root? 在上正文之前,我们先将一些基础的Linux用户以及用户组的相关命令: 1.添加用户 useradd [-g group] [-d user_home_di ...

  6. linux下的用户 | 新建和删除一个普通用户 | 普通用户和root用户之间的来回切换

    Linux系统本身是一款多用户协作的系统. linux系统中的用户分为两类 root用户 :root用户也可以被称为超级用户,权限最高,在linux上不受限制 普通用户 :权限受限制,在linux系统 ...

  7. linux安全设置:限制su、sudo切换root用户权限设置,su\sudo使用,SSH远程连接密钥登录

    目录 限制su命令切换到root用户 限制非root用户修改密码 su.sudo.sudo su 服务器安全 限制su命令切换到root用户 限制su命令切换到root用户 不希望所有用户都可以通过s ...

  8. Ubuntu切换登录用户和root用户

    在使用Ubuntu时候,有时候会需要在登录用户和root用户之间进行切换,有什么命令可以简单快速的切换呢 先来看一个命令: 再来看一个: su,这个命令就是切换当前登录用户和root用户之间进行切换的 ...

  9. Kali Linux快速切换root用户

    Kali Linux快速切换root用户 从Kali Linux 2019.4开始,默认安装过程将创建一个普通用户.大学霸IT达人而且,在安装过程中没有为root用户设置密码,也不知道其密码.所以,系 ...

最新文章

  1. 舞伴问题数据结构java_Gale-Shapley算法解决舞伴问题过程详解(C++实现)
  2. python安装numpy-NumPy 安装
  3. CF1060D Social Circles
  4. java map集合遍历方法,Java的Map集合的三种遍历方法
  5. android webview tel:,Android WebView“tel:”链接显示未找到网页
  6. PyTorch基础-猫狗分类实战-10
  7. Hive on Tez出现exec.Task: Failed to execute tez graph. java.lang.NullPointerException
  8. 将现有MFC应用程序迁移到BCGControlBar VC界面库中
  9. 联想YOGA四款新品齐发 跨设备新技术Lenovo One惊艳亮相
  10. 移动支付到底有多美?
  11. java获取当前项目或类路径
  12. FastStone Capture注册破解码
  13. matlab李雅普诺夫吸引子,matlab计算Rossler吸引子的李雅普诺夫指数
  14. bzoj 1260 (区间dp)
  15. 手绘几何图形识别(上)
  16. 计算机名加符号,最新带符号的网名
  17. Canal监听阿里云RDS
  18. 深度学习在知识图谱的应用
  19. bmp格式图片怎么转成JPG格式?教你一键转格式的方法
  20. 英语口语学习(03-06)

热门文章

  1. 1万步21天钉钉运动大神赛
  2. 我的世界服务器怎么指定领地皮,我的世界服务器内领到地皮如何给其他玩家地皮 – 手机爱问...
  3. Qt通过QRegExp类来实现输入的有效性判断与正则表达式的学习
  4. 进度压缩: 赶工与快速跟进
  5. PowerPoint 2010
  6. Visual Studio 2010 更换皮肤
  7. UbuntuKylin 安装教程
  8. C# 二进制读写与序列化和反序列化
  9. 如何区分显卡的好坏?
  10. 2021京东Java面试真题:javadouble四舍五入取整