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支持的命令才能执行。

当然我们可以将结果重定向到其他的文件中,执行后对文件再次进行分析,找到我们自动化执行的所需结果。

当然我们可以编辑一个shell脚本进行用户切换的执行。

如:vi test.sh输入下面内容后

#!/bin/bash
su - test <<EOF
pwd;
exit;
EOF

按[Esc]键,输入:wq,回车保存退出。

之后chmod 777 test.sh

执行:sh test.sh 或 . test.sh 或 ./test.sh

OK!问题得以解决。

时间: 2024-08-11 04:32:09

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

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

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

Linux中切换用户变成-bash4.1-$的解决方法【转】

转自 Linux中切换用户变成-bash4.1-$的解决方法 - xia_xia的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/xia_xia0919/article/details/50588985 在linux中切换用户时变成-bash4.1-$,发现有两个情况可能会出现这种现象. 场景一:1.在根目录下创建目录dir 2.useradd -d /dir tom 创建用户tom,指定其家目录为/dir,而不是其默认家目录下(/home/tom) 3.su

利用PROMPT_COMMAND记录每个用户执行的历史命令

在/etc/profile里加入以下几行 export HISTORY_FILE=/var/log/command-`date '+%y-%m-%d'`.log export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### USER:$USER IP:$SSH_CLIENT PS:$SSH_TTY #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HIST

[转]js中confirm实现执行操作前弹出确认框的方法

原文地址:http://www.jb51.net/article/56986.htm 本文实例讲述了js中confirm实现执行操作前弹出确认框的方法.分享给大家供大家参考.具体实现方法如下: 现在在删除或其它操作前弹出确定提示,我们有很多方法,最基本的就是利用js自带的函数confirm来操作了 最简单的用法如下: 鼠标事件使用confirm 复制代码 代码如下: <a href="#" onclick= "if(confirm( '是否确定! ')==false)r

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.  第一

Linux系统中切换用户身份su与sudo的用法与实例

日常操作中为了避免一些误操作,更加安全地管理系统,通常使用的用户身份都为普通用户,而非root.当需要执行一些管理员命令操作时,再切换成root用户身份去执行. 普通用户切换到root用户的方式有:su和sudo. 1,su - (su为switch user,即切换用户的简写) 格式:su -l USERNAME(-l为login,即登陆的简写) -l可以将l省略掉,所以此命令常写为su - USERNAME 如果不指定USERNAME(用户名),默认即为root,所以切换到root的身份的命

【MYSQL】在脚本中使用变量-执行脚本时传参

在shell脚本里可以定义变量,并在执行脚本时任意传参. #!/bin/bashdb_name=$1 #将第一个值赋给db_name变量sql_name=$2 #将第二个值赋给sql_name变量mysql -uroot -p123456 -h192.168.227.129 $db_name < $sql_name 在执行shell脚本时,在执行命令后面直接传参即可 ./sqlrecovery jinqy jinqy.sql

shell脚本中变量的递归使用--真实内存使用查看脚本

脚本中进行变量计算时,需要加一个[ ],在外面再套一个$ [[email protected] tmp]# cat real_mem_used01.sh #!/bin/bashTOTAL=`free -g|grep Mem |awk '{print $2}'`USED=`free -g|grep Mem |awk '{print $3}'`BUFFER=`free -g|grep Mem |awk '{print $6}'`CACHE=`free -g|grep Mem |awk '{print

centos中查看用户和用户组的命令

用户列表文件:/etc/passwd 用户组列表文件:/etc/group 查看系统中有哪些用户:cut -d : -f 1 /etc/passwd 查看可以登录系统的用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1 查看用户操作:w命令(需要root权限) 查看某一用户:w 用户名 查看登录用户:who 查看用户登录历史记录:last