shell,切换用户,执行指定,脚本

某些情况下,比如oracle,必须切换到指定用户才能重启oracle。

每次手动操作比较麻烦,可以写个脚本。

自动输入密码的功能,需要用到expect

先安装

yum install -y expect

编辑脚本

vi aa.sh

#!/usr/bin/expect

spawn su oracle -c "/opt/1.sh"

expect "password: "

send "123456\r"

interact

exit

备注:

1.  第一行是#!/usr/bin/expect,而不是#!/bin/bash,这个需要特别注意。

2.  -c是指定切换用户之后,需要执行的命令。有多个命令,可以写在一个脚本里面。如果没有-c选项,那么切换用户之后,后续执行的命令是在当前用户执行的,而不是切换之后的用户。

3.  123456\r 表示oracle密码是123456

4.   脚本执行之后,出现输入密码,这个时候,千万不要输入密码,等待12秒之后,就会自动输入密码,并且执行-c指定的命令,保证shell有执行权限。

时间: 2024-10-10 21:58:24

shell,切换用户,执行指定,脚本的相关文章

如何在shell下切换用户执行命令?

su - dev -c "ls" "su -"切换用户,并且当前目录页切换到相应用户的根目录. "dev"是用户名 "-c"后面接需要执行的shell command 如何在shell下切换用户执行命令?

shell脚本中切换用户执行相应的命令或者shell脚本的方法

通常在执行自动化过程中可能需要将root用户切换到其他用户进行执行,如:oralce 但是,执行的命令又要回到root用户下,继续执行root用户下的其他命令. 此时需要了解 su 命令中的参数 -c  或 -s 比如: # su - oracle -c "pwd"/home/oracle 或 su - oracle -s /bin/sh test.sh 此时执行的test.sh中相关命令要在bin/sh下,换句话说,bin/sh支持的命令才能执行. 当然我们可以将结果重定向到其他的文

发送消息的时候,会指定用户,其实还可以定义媒介为脚本,让用户执行这个脚本

在/etc/zabbix/zabbix_server.conf配置文件中,有一个AlertScriptsPath指令,指明了媒介的脚本存放的路径,AlertScriptsPath=/usr/lib/zabbix/alertscripts 在/usr/lib/zabbix/alertscripts目录下创建一个脚本,可以实现给QQ发送邮件 vi /usr/lib/zabbix/alertscripts/sendMailToQQ.sh #! /bin/bash # 拿到发送邮件的人的地址,$1表示[

shell判断用户

if [ `whoami` = "XXX" ] then #echo "[用户检测ok]当前执行用户为XXX,脚本继续执行" echo "" else echo "[用户检测fail]$kkk项目部署ERROR,当前用户为`whoami`,必须使用XXX 用户执行,脚本退出执行!" exit 1 fi

设置开机启动时指定非ROOT用户执行相应的脚本

1 [[email protected] sm01]# vim /etc/rc.d/rc.local 2 3 #!/bin/sh 4 # 5 # This script will be executed *after* all the other init scripts. 6 # You can put your own initialization stuff in here if you don't 7 # want to do the full Sys V style init stuf

Shell脚本实现每个工作日定时执行指定程序

我们可能会遇到这样的情景:必须在每个工作日定时执行Linux服务器上的某个程序.那么有没有办法实现这一功能呢?答案是肯定的.我们可以运用Shell脚本简单实现这一功能. 原理很简单,Shell脚本内部每隔1秒查询一次当前时间.日期以及星期数,当检测到当前星期数week非0或6(0代表星期天,6代表星期六)且时间curTime大于指定时间startTime时,执行指定的程序program.为了保证每天仅执行一次指定程序program,还引用了变量isFirstTime做标记.具体代码如下: 1 #

pssh 不能执行指定用户命令

问题: 一个脚本a.sh(必须root用户执行),在本地可以运行,通过pssh  -h ip_file "cd /home/byte/a.sh"不能执行. 原因: 分析应该是ssh没有获取到root权限,可能原因是操作系统安装时有多个用户且默认远程用户非root.通过查看可知是ssh默认登录用户不是root Linux系统设置涉及到两种启动shell的方式一个是本地登录另一个是远程登录, 本地直接登录shell终端环境调用过程是 ~/.bash_profile->~/.bashr

Windows 添加计划任务 每隔一定时间执行指定批处理脚本

schtasks /create /sc minute /mo 20 /tn "TestBatch" /tr C:/TestBatch.bat TestBatch.bat echo "---------------------批处理开始------------------------------"ping sz.tencent.com > D:/a.txtping sz1.tencent.com >> D:a.txtping sz2.tencent

Linux定时执行指定的脚本文件

Linux执行脚本文件,该脚本定时执行的是url链接:①在 cd /.scripts 目录下创建脚本 :    脚本文件格式 , 例如:curl.sh②在脚本中写入要执行的文件 :     /usr/bin/curl https://www.test.com/Test/test.php③命令crontab -e 里面定时执行指定的脚本 :    59 23 */2 * * /.scripts/curl.sh 该脚本的执行时间是每两天的23点59分执行