首页
学习
活动
专区
工具
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.9K30

如何使用不同的命令启动已经停止运行的 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: (我想我该严格限制

    85930

    【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

    62731

    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

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

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

    1.6K20

    权力与优雅:Linux 权限的隐秘诗篇

    主要作用: 命令解析:解释并执行用户输入的命令(如文件操作、程序运行等)。 脚本支持:可以运行编写好的 Shell 脚本,实现任务自动化。 提供用户环境:允许用户执行程序、管理文件和配置系统。...用户权限 在 Linux 系统中,root 用户和普通用户是两类不同权限级别的用户,分别承担着系统管理和普通操作的角色。...root 用户的命令提示符是 “#” ,普通用户的命令提示符是 “$”。 切换用户 从普通用户切换到 root 用户: 使用 su 命令: su 输入 root 密码后切换。...从 root 用户切换到普通用户: 退出 root 用户: exit 指定切换到某个普通用户: su username su - 指令 su - 指令在切换用户时就相当于重新登录,不会在原有的目录下切换...对目录:可以创建、删除或重命名目录内的文件。 x(execute):执行权限。 对文件:可以作为程序运行。 对目录:可以进入该目录。

    12310

    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

    38910

    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

    LoadRunner 技巧之 IP欺骗 (推荐)

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

    85530

    一步步学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.3K31

    像极客一样提取Android的Root权限

    一般第三方的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账号登录系统。 当系统管理员需要从普通用户切换到超级用户时,可使用su或su -命令,然后输入root账号的密码即可,而不用重新登录。...su和su –命令不同之处在于,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/目录下的文件权限没有检测出来...在检查了user1的sudoer列表后,我们发现该用户可以将所有命令作为sudo运行。...保存成新的passwd文件,使用user7用户下载到环境中,覆盖原来的passwd文件内 ? 查看passwd内容并切换账户 ? 提权成功!

    1.8K30

    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 并行处理神器一般在控制台的命令都是单线程执行,单线程速度太慢了,特别是对于一些嵌套循环来说。

    10410
    领券