首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用不同的用户(su -c)在脚本内使用for循环运行一组命令

在脚本内使用for循环运行一组命令,可以通过使用不同的用户(su -c)来实现。下面是一个示例脚本:

代码语言:txt
复制
#!/bin/bash

# 定义要执行的命令列表
commands=("command1" "command2" "command3")

# 定义要切换的用户列表
users=("user1" "user2" "user3")

# 循环遍历用户列表
for user in "${users[@]}"
do
    # 切换到指定用户并执行命令
    for command in "${commands[@]}"
    do
        su -c "$command" "$user"
    done
done

上述脚本中,我们首先定义了要执行的命令列表和要切换的用户列表。然后使用两个嵌套的for循环,分别遍历用户列表和命令列表。在内层循环中,使用su -c命令切换到指定用户并执行相应的命令。

这种方法适用于需要以不同用户身份执行一组命令的场景,比如在服务器上批量执行命令或脚本时。通过循环遍历不同的用户和命令,可以实现批量执行的效果。

腾讯云相关产品中,可以使用云服务器(CVM)来运行脚本并切换用户执行命令。您可以参考腾讯云云服务器的文档了解更多信息:腾讯云云服务器

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何使用Docker Compose容器运行Linux命令

本文中,我们将详细介绍如何使用Docker Compose容器运行Linux命令,并展示一些常见应用场景。...使用Docker Compose,您可以轻松地与生产环境相似的容器中运行命令,以确保环境一致性。批量处理和脚本执行Docker Compose可以用于批量处理和执行脚本。...您可以容器内部运行包含多个命令脚本,并在多个容器之间协调操作。数据库管理和迁移对于数据库管理和迁移任务,Docker Compose非常有用。您可以容器运行数据库备份、还原、迁移和管理等操作。...这对于不同环境中部署和配置应用程序非常有用,保证了环境一致性和可重复性。日志分析和处理容器中运行命令还可用于分析和处理应用程序日志。...注意事项使用Docker Compose容器运行Linux命令时,请记住以下注意事项:确保您具有足够权限来执行命令。某些命令可能需要以特定用户或超级用户权限运行。谨慎处理容器中数据。

2.7K30

如何使用不同命令启动已经停止运行 Docker 容器?

你好,我是征哥,我相信不少人都会遇到这样问题,容器本来运行好好,可是有一天报错退出了,重启容器依然报错,因为默认命令会崩溃,这意味着我无法启动容器后使用 docker exec。...今天分享:如何不重新构建镜像情况解决容器报错问题,只需要两步。 第一步,将报错容器保存至新镜像 这一步是为了保存之前对容器变更,如果没有对容器写入东西,这一步可以忽略。...entrypoint[1],构建镜像时候,我们可以使用 CMD 或者 ENTRYPOINT 配置容器启动时执行命令,但这两者有所不同: CMD 命令设置容器启动后默认执行命令及其参数,但 CMD...ENTRYPOINT 配置容器启动时执行命令,不会被忽略,一定会被执行,即使运行 docker run 时指定了其他命令。 我用 Python 容器方法 容器就是运行环境打包。...Python 了: sudo docker exec -it mypython python [是容器内部脚本] 如果要安装依赖: sudo docker exec -it mypython pip

2.5K20
  • Ubuntu系统微调

    再加上 nice 和 renice(不包括工具包),就可对进程日程安排进行全面的管理。 使用 noatime 选项挂载文件系统可有效提高文件读取速度。...别担心: Ubuntu 中,当前版本 su 使用 PAM,因此你可以用 /etc/pam.d/su pam_wheel.so 来限制任何用户使用 su 能力。...下面的操作将在 Ubuntu 系统中赋予 adm 用户等同于 BSD wheel 用户权限,而且该组成员不需要密码就能使用 su 命令。...audio group 可在本地赋予一组用户访问声音设备权限。 src group 拥有源代码以及 /usr/src 目录下文件。它可以本地赋予某个用户管理系统源代码权限。...当然,如果你知道 root 密码(绝大部分在家安装系统用户都会知道),就可以普通用户下执行任何 root 命令: $ su -c "shutdown -h now" Password: (我想我该严格限制

    84730

    【Shell】环境变量 自定义变量 特殊变量

    环境变量分类 Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。..."$n" 使用循环打印所有输入参数可以看出区别 循环语法 for var in 列表变量 do # 循环开始   命令  # 循环体 done    # 循环结束 案例需求 demo4...使用循环打印输出所有输入参数 echo '循环遍历输出 运行观察区别 特殊变量:$?.../etc/profile Shell非登录环境会运行/.bashrc /etc/profile与/当前用户/.bashrc文件分别设置环境变量数据,然后shell脚本文件中输出环境变量数据,最后切换不同环境执行...客户端远程采用SSH登录演示 切换环境方式2:su切换用户登录 命令 语法1 su 用户名 --login 或 su 用户名 -l # 切换到指定用户, 加载Shell登录环境变量 语法2 su

    58331

    docker 实用工具 gosu 和 su-exec 实践

    比如,host 当前使用 docker 用户 UID 是 1000(这是默认第一个用户 UID)。...容器运行时候通过 ENTRYPOINT 来做一些操作,比如把 volume 挂载目录权限给改正确,然后再切换普通用户运行正常程序进程。...容器中虽然可以,但是这不是一个好方案,容器里面 PID=1 进程就是应用本身。因此可以使用gosu命令来切换用户执行命令。...,再次运行 docker-entrypoint.sh 文件(" 当再次执行该脚本时由于已经不是 root 用户了, 会直接执行exec "$@", 于是直接执行带参数,即 CMD 定义脚本。...,可以容器运行时强制把目录权限修改成需要权限,即使 docker 通过 root 用户初始化创建 volume 挂载目录。

    1.4K20

    3个学生linux视频学习笔记

    介绍了如何下载并安装R及R操作软件Rstudio,Rstudio里进行了简单命令演示以及如何安装并调用包,需要注意是,所有软件推荐从官网进行下载,并且安装时候默认进行,基本不需要改动任何选项...Linux 3 去可视化命令行 Linux特点是批量、高效、多用户,而其缺点则是不同于通常使用习惯Windows或者Mac系统鼠标可视化操作。...Linux 8 shell脚本编程 视频通过几个方面讲解了Linux中脚本编程,一是变量,变量是指代码中可变部分,可以赋值可以索引;二是参数,程序运行时变换参数会得到不同结果;三是通配符, 像ls...linux-2 系统认知 讲解Linux系统一些特点(交互式、多用户)和基本命令(grep、管道、history、su切换用户、登录 : ssh 用户名@ip地址 ) Linux-3 去可视化命令行...-ef | grep sleep #查看当前运行进程,类似于wins系统管理器 标准格式显示进程 su s1 #切换登录用户 exit #退出用户登录 P4 linux-3-去可视化命令行 ?

    1.6K31

    ssh配置命令_ssh config配置

    systemd为系统启动和管理提供了完整解决方案 (字母d是守护进程daemon缩写) 查看systemd 版本——$ systemctl –version systemd提供一组命令,...---- 补充:切换用户命令su(switch user) #su 用户名——切换到指定用户 #su ——切换到超级管理员 注意: 切换用户前后工作路径是不变 普通用户没有办法访问root用户家目录...这个颜色不同于之前学习蓝色(表示文件夹) 这里是天蓝色(表示链接类型link) 在当前目录使用#ls -l命令——可以看到这个天蓝色文件以l开头(link类型),并且可以末尾看到其实际路径...很多守护进程系统引导时候启动,并且一直运行直到系统关闭。也有一些只需要时候才启动,完成任务后就自动结束。...命令使用命令ifconfig可以查 返回windows命令行测试服务器ip连通性,使用命令ping 确定IP连通性正常后,可以进入终端工具进行服务器远程连接 具体操作参考下文: Xshell如何远程连接

    5.5K40

    编程语言与shell脚本

    编程语言分类: 编译型语言 程序执行之前需要一个专门编译过程,把程序编译成为机器语言文件,运行时不需要重新翻译,直接使用编译结果就行了。程序执行效率高,依赖编译器,跨平台性差些。...是一个程序,采用C语言编写,是用户和linux内核沟通桥梁。...2.1、 命令和文件自动补全 Tab只能补全命令和文件 (RHEL6/Centos6) 2.2、 常见快捷键—提升操作熟练度 ^c 终止前台运行程序 ^z 将前台运行程序挂起到后台 ^...harry #设置用户密码 yunwei.98989 echo "yunwei.98989"|passwd --stdin harry #使用harry创建文件夹,文件,输入文件中内容 su -...尽可能记忆更多命令 掌握脚本标准格式(指定魔法字节、使用标准执行方式运行脚本) 必须熟悉掌握脚本基本语法(重点) 学习脚本秘诀: 多看(看懂)——>多模仿(多练)——>多思考 4、shell

    38610

    Bash Shell

    Shell启动脚本作用包含以下4点:1.通过启动脚本中设置局部变量或运行set命令来设置shell  2.通过启动脚本文件中建立环境变量设置其他程序  3.启动脚本文件中创建(启用)别名4.启动脚本文件中定义系统启动时要执行程序...通过“su - 用户名”命令进行用户切换,这个用户使用也是他登录Shell ( Login shell)。...非登录Shell是以其他方式启动一个shell:使用"su用户名"命令su命令没有使用,执行脚本,从一个shell中启动shell。...因为/etc/profile中使用for循环语句调用了这些脚本,所以这些脚本才能够被自动执行。这些脚本是用来设置和运行一些初始化过程。.../etc/bashrc脚本文件也是存放在用户家目录、每当用户退出时就会运行脚本文件。~.

    1.5K30

    一步步学KubeVirt CI (3) - gosu容器中使用

    gosu容器中使用 容器中使用gosu起源来自安全问题,容器中运行进程,如果以root身份运行会有安全隐患,该进程拥有容器全部权限,更可怕是如果有数据卷映射到宿主机,那么通过该容器就能操作宿主机文件夹了...因此,容器使用非root账号运行进程才是安全方式。gosu类似linux中su和sudo命令。但是既然有了su和sudo为何还要做出一个gosu来。...不同点是:RUN命令执行命令并创建新镜像层,通常用于安装软件包。CMD ENTRYPOINT是设置容器启动后默认执行命令其参数且他们组合官网有个说明。...检测到root用户启动redis命令redis-server,就会做两件事: 找到当前目录所有非redis用户文件并将找出全部文件改成redis所有,find . \!...exec gosu redis " 第二次执行CMD+ENTRYPOINT,因为是redis用户执行,所以不进入if语句,直接exec " 该脚本内容就是根据 CMD 内容来判断,如果是 redis-server

    1.2K31

    LoadRunner 技巧之 IP欺骗 (推荐)

    3、有一些网站会限制同一个用户同一个IP 登陆。为了更加真实模拟实际情况,LoadRunner允许运行虚拟用户使用不 同IP 访问同一网站。...创建测试脚本(IP欺骗) 经过上面的配置,你真的已经知道如何使用IP欺骗了么?或者你真的理解了IP欺骗?如何证明你已经使用了IP欺骗?...当然,脚本本身没有任何问题,脚本中添加事物可以预防这个问题发生。 OK! 别急着保存脚本导入到Controller运行。...第四步: 运行脚本,查看虚拟用户log 脚本运行页面,点击Vusers…—-> 右键点击虚拟用户弹出菜单中打开“show Vuser log” 可以看到每个用户使用IP是不同。...( 实际上,在场景中除非需要在这个Generator上运行多个不同脚本,否则没有必要多次以不同IP选择。)

    84530

    像极客一样提取AndroidRoot权限

    一般第三方Recovery会更强大一些。在下一节会详细介绍如何使用第三方Recovery。 第2步:破解su命令 提取ROOT权限关键就是执行su命令。...不过Android系统带su命令默认情况下只能由root用户调用,所以使用su命令之前需要先破解su命令,也就是修改su源代码,将检测调用权限代码去掉,如果有必要,再加入满足自己需求代码。...也就是所,提取ROOT权限实际上使用是已经破解了su命令。在后面的内容会详细介绍如何修改su源代码,并重新生成su命令文件。...根据不同需求,刷机包中包含文件不同,一个完整刷机包非常复杂,不过本节目的只是将su文件复制到/system/xbin目录中,所以暂时用不着那么复杂刷机包。...读者可以http://www.busybox.net下载busybox最新版本源代码,并按着说明使用交叉编译器编译busybox即可(ARM架构设备上运行必须要使用交叉编译器),为了方便读者,随书光盘中带了一个编译好

    2.2K20

    docker与gosu

    容器中不要使用root账号 gosu是个工具,用来提升指定账号权限,作用与sudo命令类似,而docker中使用gosu起源来自安全问题; docker容器中运行进程,如果以root身份运行会有安全隐患...因此,容器使用非root账号运行进程才是安全方式,这也是我们制作镜像时要注意地方。...镜像中创建非root账号 既然不能用root账号,那就要创建其他账号来运行进程了,以redis官方镜像Dockerfile为例,来看看如何创建账号,如下图,地址是:https://github.com...Dockerfile脚本中未发现USER redis命令,这意味着执行docker-entrypoint.sh文件身份是root; 其次,docker-entrypoint.sh中没有发现su...服务并非root账号启动,而且该服务进程容器还是一号进程,但是我们Dockerfile和docker-entrypoint.sh脚本中都没有发现切换到redis账号命令,也没有sudo和su,这是怎么回事呢

    4K51

    linux基本命令学习01

    top命令能够在运行后,指定时间间隔更新显示信息。 可以使用top命令时加上-d 来指定显示信息更新时间间隔。...Unix/Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号, 并且对于不同系统资源拥有不同使用权限。...大多数版本Unix/Linux中,都不推荐直接使用root账号登录系统。 当系统管理员需要从普通用户切换到超级用户时,可使用susu -命令,然后输入root账号密码即可,而不用重新登录。...susu命令不同之处在于,su -切换到对应用户时会将当前工作目录自动转换到切换后用户主目录。...Unix/Linux中,超级用户可以使用passwd命令为普通用户设置或修改用户口令。 用户也可以直接使用命令来修改自己口令,而无需命令后面使用用户名。

    1.1K10

    Escalate_Linux 多漏洞提权实战

    因为之前我们已经浏览器中执行过id命令,知道当前是user6用户,是一个id是1005用户,所以使用upload命令上传linux环境检查脚本,但是失败 ?...换个思路,本地开启web环境,将脚本放置www目录中,通过进入到靶机中shell中tmp目录中执行wget命令下载 ? 成功了!...下面开始进行权限提升不同方法尝试 I 利用shell文件SUID权限获取shell 我们上面使用LinEnum.sh扫描时候由于网段是NAT,所以检测时候/home/目录下文件权限没有检测出来...检查了user1sudoer列表后,我们发现该用户可以将所有命令作为sudo运行。...保存成新passwd文件,使用user7用户下载到环境中,覆盖原来passwd文件 ? 查看passwd内容并切换账户 ? 提权成功!

    1.8K30

    sudo、susu – 之间区别以及wheel组

    如何使用 su 命令切换到 root 用户,如下: [moonrong@haopython-kvm /]$ su   密码:   [root@haopython-kvm /]#    如上,su 命令要求输入密码是...2.su -c 还有一个值得一提 su 命令行选项为:-c。该选项允许你提供在切换到目标用户之后要运行命令。...sudo 命令只允许使用提升权限运行单个命令,而 su 命令会启动一个新 shell,同时允许使用 root 权限运行尽可能多命令,直到明确退出登录。...运行以下命令: sudo su 由于你使用 sudo 运行命令,你只需要输入当前用户密码。所以,一旦完成操作,su 命令将会以 root 用户身份运行,这意味着它不会再要求输入任何密码。...三.结论 当你需要可用工具来提升(或一组完全不同)权限来执行任务时,这篇文章以及之前教程(其中侧重于 sudo 命令)应该能给你一个比较好建议。

    2.7K31

    linux系统相关1

    linux命令行查看每个文件空间大小Linux命令行中,可以使用du命令来查看文件或目录磁盘使用情况。...配置静态ip1.修改对应系统配置文件本服务器中,文件路径对应如下etc/netplan/01-network-manager-all.yaml可能要root权限,命令如下:sudo su输入账户密码即可输入命令打开文件...//添加用户 su root 切换为root用户3)login //登录或切换用户4)logout //注销用户命令行) exit(shell-退出控制台)5)shutdown -h 10...命令sh -c "conda activate python3.6"相当于shell脚本开始处,激活环境,可能会报错,解决办法如下面这篇文章解决方案文章linux查看进程运行时间通常我们可能使用top...ps -ef |grep 3892077linux parallel 命令,Linux 并行处理神器一般控制台命令都是单线程执行,单线程速度太慢了,特别是对于一些嵌套循环来说。

    10310
    领券