shell脚本中使用root权限_朽木白露的博客-程序员秘密_shell以root执行命令

技术标签: linux  ubuntu/ros/树莓派  bash  开发语言  

方法一:使用expect

参考博客:https://www.cnblogs.com/linuxAndMcu/p/11127787.html#_label1

#!/usr/expect/bin/expect -f

set timeout=5 #设置5秒超时
#下面几行后面不能添加注释,否则会异常
#send "exit\r" - exit命令:会退出root账号,成为普通用户
spawn su - root
expect "密码:"
send "zlkj\r"
send "pwd\r"
#send "exit\r"
interact #使用interact后,脚本将退出到root账号下,可以手动执行root权限的命令
exit 0 #退出脚本

方法二:sudo

这个方法只能进入root执行一条指令,参考:
https://blog.csdn.net/wangpailiulanqi8/article/details/82414136
http://m.blog.chinaunix.net/uid-20620288-id-5745939.html

使用下面的代码

echo [password] | sudo -s [commond]

测试,其中[password]为用户密码:

#!/usr/expect/bin/expect -f
whoami
echo [password] | sudo -s whoami
whoami
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45467083/article/details/121179961

智能推荐

python2.7读取txt文件,python读取txt文件_空谷幽兰月影寒的博客-程序员秘密

在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。1.读文件要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:f = open('test.txt'...

SQL之结构定义语言DDL(数据库的操作+数据库表的概述及操作)_月下赶路人的博客-程序员秘密

文章目录SQL-DDLDDL概述操作数据库数据库表数据库表的基本概念设计表数据类型约束操作数据库表创建、删除、修改修改表结构SQL-DDLDDL概述数据(结构)定义语言DDL(Data Definition Language),是用于创建和修改数据库表结构的语言。常用的语句:create(创建);alter(更改);drop(删除);rename(重命名),由于sql语言不区分大小写,一些数据库的软件会自动把关键字便为大写,因此我们这里的语句都使用小写。操作数据库[ ]内的可以写也可以不写1

更改SUSE运行级别_liangziyisheng的博客-程序员秘密

1.修改/etc/inittabid:3:initdefault:2.删除原始链接文件,重新建立链接文件rm /etc/systemd/system/default.targetln -s /usr/lib/systemd/system/runlevel3.target /etc/systemd/system/default.targetsuse

自动化导入模块:require.context_Missy Peng的博客-程序员秘密

在日常引入组件,模块的时候,其实目录格式都差不多,能不能一键引入所有呢?require.context 可以帮助我们实现这个功能。需要 webpack (或在内部使用了 webpack 的 Vue CLI 3+)传统引入,如果文件有很多,就会很麻烦,而且后期每加一个文件,需要再导入一次import moduleA from './modules/moduleA.vue'import moduleB from './modules/moduleB.vue'import moduleC from './

BZOJ 1552 浅谈SPLAY维护区间最值_BerryKanry的博客-程序员秘密

世界真的很大 虽然这道题算是splay的比较偏模板题了,但是自己想的话还是有难度 关键是怎么把SPLAY维护东西的思路转换过来,是关键 写起来虽然的却有点多但是却是意外的好调 看题先:description:input输入共两行,第一行为一个整数N,N表示物品的个数,1<=N<=100000。第二行为N个用空格隔开的正整数,表示N个物品最初排列的编号。output输出共一行,N个用空格隔开的

vivado软件安装教程_vivado安装教程_夜晚的学霸的博客-程序员秘密

vivado软件安装教程一.需要准备软件准备好vivado2018.2软件,没有就去xilinx官网下载二.安装步骤本次安装教程是windows平台打开下载好的vivado文件,双击xsetup.exe,弹出安装窗口,点击Next勾选三个 I Agree,点击Next选择vivado HL System Edition,点击Next注意观察SDK有没有勾选上,如果没有一定要勾选上,包括ZYNQ芯片也要勾选千万别漏否则重新安装,点击Next设置软件安装路径,记住安装路径可以不安装在C盘但

随便推点

微信支付:手机系统自带的浏览器,调用微信支付如何实现(非扫码)_weixin_34318956的博客-程序员秘密

Q:翻看了微信支付的api没发现支持h5调支付接口的情况(微信js除外),然后却发现美团的支付成功调用了,这是怎么实现的? A:使用微信H5支付即可。H5支付通过URL调起微信APP,不涉及到应用签名,可解决一次申请给多款APP使用的问题,看看现在游戏分发行业就知道了。现在从官网申请到的APP支付(即通过SDK调起微信APP),如果适用在公司只有几款APP的...

pycharm 怎么进行多行编辑_pycharm鼠标批量写_Apache_Jerry的博客-程序员秘密

方法一:在代码界面,点击鼠标右键,然后按住鼠标左键下拉选择就行了方法二:直接按下快捷键,alt+shift+insert,然后长按鼠标左键下拉即可进入多行编辑模式。...

Java运行时动态生成类_java动态生成类_老谭TYH的博客-程序员秘密

1、自己动手,从零开始创建字节码,理论上可行,实际上很难2、CGLib(代码很难看懂)Enhancer e = new Enhancer();e.setSuperclass(...);e.setStrategy(new DefaultGeneratorStrategy() { protected ClassGenerator transform(ClassGenerator cg) { return new TransformingGenerator(cg, new A

关于同步加载与异步加载的区别_weixin_33805743的博客-程序员秘密

关于同步加载与异步加载的区别同步加载:同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止了后续的解析,因此停止了后续的文件加载(如图像)、渲染、代码执行。异步加载:异步加载又叫非阻塞,浏览器在下载执行 js 同时,还会继续进行后续页面的处理。为何使用异步加载原因:优化脚本文件的加载提高页面的加载速度,一直是提高页面加载速度很重要的一条。因为涉及到各个浏览器对解析脚本文件的不同机制...

推荐文章

热门文章

相关标签