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

在python中使用su - user执行多个命令

在Python中使用su - user执行多个命令,可以使用subprocess模块来实现。subprocess模块允许你在Python脚本中执行外部命令,并获取其输出。

下面是一个示例代码,演示如何在Python中使用su - user执行多个命令:

代码语言:txt
复制
import subprocess

def execute_commands_as_user(commands, user):
    # 构建su命令
    su_command = ['su', '-', user, '-c']

    # 执行多个命令
    for command in commands:
        # 构建完整的命令
        full_command = su_command + [command]

        # 执行命令并获取输出
        process = subprocess.Popen(full_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        output, error = process.communicate()

        # 打印输出结果
        print(f'Command: {command}')
        print(f'Output: {output.decode()}')
        print(f'Error: {error.decode()}')
        print('---')

# 要执行的命令列表
commands = [
    'ls',
    'pwd',
    'whoami'
]

# 执行命令作为指定用户
execute_commands_as_user(commands, 'user')

上述代码中,execute_commands_as_user函数接受一个命令列表和一个用户参数。它使用su - user -c命令来切换到指定用户,并执行每个命令。然后,它通过subprocess.Popen执行命令,并使用communicate方法获取命令的输出和错误信息。

你可以根据需要修改commands列表中的命令,以及execute_commands_as_user函数中的用户参数。请确保在执行命令时具有足够的权限。

注意:在实际使用中,请谨慎处理使用su命令切换用户的操作,确保安全性和权限控制。

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

相关·内容

Linux:使用su命令以非登录用户身份执行命令

Linux系统su命令通常用于切换到另一个用户账户,并启动该用户的登录shell。...然而,对于那些被设置为不能登录的用户(如其shell被设置为/sbin/nologin或/bin/false),我们仍然可以使用su命令以该用户的身份执行特定的命令,而不是进入一个完整的shell会话。...使用su命令执行单一命令 如果我们需要以非登录用户的身份执行命令,可以使用su命令的-s选项来指定一个替代的shell。...安全提示 使用su来以非登录用户身份执行命令时,确保该命令不会暴露敏感信息或不小心改变了系统设置。始终以最小权限原则操作。 5....结论 使用su -s /bin/bash可以有效地以任何用户身份执行命令,即使该用户的账户被设为了不能登录。这种方法为系统管理员提供了灵活性,同时也需要谨慎使用,以保证系统的安全与稳定。

62611

Linuxsu,sudo,sudo su,sudo -i命令使用和区别

sudo 与 su 命令的区别: sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。...sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。...sudo - root、sudo -i ,sudo - ,sudo root 效果相同 提示输入密码时该密码 为当前账户的密码,要求执行命令的用户必须在sudoers 才可以 su 需要的是切换后账户的密码...sudo -i: 为了频繁地执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行命令后提示符变为“#”而不是。...“$”:想退回普通账户时可以执行“exit”或“logout” 。要求执行命令的用户必须在sudoers 才可以。

9.5K20
  • python脚本执行shell命令的方法

    python脚本执行shell命令的方法 最近在写python的一些脚本,之前使用python都是django中使用,可能大部分内容都是偏向于后端开发方面的,最近在写一些脚本的时候,发现了...使用Python处理一个shell命令或者一个执行一个shell脚本,一般情况下,有下面三种方法,下面我们来看: 第一种方法是使用os.system的方法 os.system("cmd") 我们在当前目录下面创建一个...shell命令打印出来aaa.sql的内容,然后下面出现的数字0代表上述命令执行成功;如果我们打印bbb.sql则返回值是256,表示执行中出现了问题。...,当然,我们也可以使用下面的方法来分别校验aaa.sql文件是否存在,以及查看aaa.sql的执行结果: 1[root@ /data]$python 2Python 2.7.15 (default, Nov...第三种方法是使用popen函数 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出 1[root@ /data]$python 2Python

    5.3K00

    SORT命令Redis的实现以及多个选项时的执行顺序

    图片SORT命令Redis实现了对存储列表、集合、有序集合数据类型的元素进行排序的功能。SORT命令基本原理如下:首先,SORT命令需要指定一个key来表示待排序的数据。...需要注意的是,SORT命令的排序是Redis服务端进行的,所以当排序的数据量较大时可能会有性能影响。同时,进行有序集合的排序时,可以使用WITHSCORES选项来获取元素的分值。...Redis的SORT命令可以使用多个选项,这些选项的执行顺序如下:ALPHA选项先于BY选项执行。...STORE选项执行完以上选项之后执行。这个选项用于将排序结果保存到一个新的列表。...下面是一个示例,说明了多个选项的执行顺序:假设有以下的待排序列表:"users",包含了三个用户信息:1. user:id:1 -> name:John Doe, age:30, salary:500002

    55371

    Sudo for Windows: Windows 11 执行特权命令

    该工具改变了用户从非特权控制台会话(unelevated console session)直接执行特权命令的方式。Sudo for Windows 提供了一种直观、熟悉的解决方案。...for Windows,定位到 Windows Settings 下的 Settings > For Developers 页,并打开“Enable Sudo”选项,如下所示: 此外,用户也可以通过特权控制台会话执行以下命令来启用...以下是示例场景: “打开新窗口”配置:运行sudo netstat -ab 命令会打开一个新的特权控制台窗口,并在其中执行这条命令。 “关闭输入”配置:在当前窗口中运行特权进程,stdin 关闭。...当使用sudo提升进程权限时,用户帐户控制(UAC)对话框会提示用户确认。用户确认后,系统将根据所选配置提升进程权限。用户可以通过控制台中运行sudo -h来查看 sudo 命令的可选参数。...“打开新窗口”配置,sudo.exe 会启动一个新的特权控制台窗口,并镜像当前窗口的目录和环境变量。对于“关闭输入”和“内联”配置,sudo.exe 会启动一个新的特权进程。

    47910

    使用 pyenv 可以一个系统安装多个python版本

    2016.01.06 21:02* 字数 82 阅读 24416评论 11喜欢 12 Title: 使用 pyenv 可以一个系统安装多个python版本 Date: 2016-01-06 Author...: ColinLiu Category: Python tags: python,pyenv 使用 pyenv 可以一个系统安装多个python版本 Installl related yum install...(global、local、shell) $ pyenv version 3.5.1 (set by /root/.pyenv/version) # 使用 python-build(一个插件) 安装一个...创建 shims, # 因此,每当你增删了 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令 $ pyenv rehash # 设置全局的 Python 版本,通过将版本号写入...$ pyenv shell pypy-2.2.1 $ pyenv shell --unset Refer to pyenv命令列表 --------------------------------

    3.1K30

    使用Python登录网关设备执行命令

    但是手动操作比较麻烦,需要使用python登录网关设备,检测是否正常。...Telnet.interact() : telnet的交互功能,下面用了一个死循环保证用户能够一直输入命令进行某些操作,也可以使用Telnet.interact()这个方法来使所连接终端持久化,不过官网说...self.username = user         self.password = pswd         self.last_res = ''  # 记录上次命令执行结果     # 此函数实现...='root', pswd='123456')     # 如果登录结果返加True,则执行命令,然后退出     if not telnet_client.login_host():         ...执行脚本 # python3 check_gateway.py 10.212.82.90 登录成功 正常,ip: 10.212.82.90 设备正常 本文参考链接: https://blog.csdn.net

    1.7K42

    Python执行二分查找

    标签:Python,二分查找 本文将展示二分查找算法的工作原理,并提供完整的示例代码,帮助你Python执行自己的二分查找。...需要注意的是,使用二分查找算法查找数组的项目之前,数组或列表必须按升序排序。 下面是一个例子。假设要在初始化已排序的nums列表查找整数15。...二分查找算法使用下面的公式计算中间索引: start index + (end index – start index) // 2 = 4 上面脚本的双正斜杠指定只返回整数部分,因此尽管9/2=4.5...二分查找算法Python的实现 下面是Python实现自己的二分查找算法需要执行的步骤: 1.初始化三个变量:开始索引、结束索引和中间索引。...下面的脚本Python实现了二分查找算法。该脚本nums列表查找项目15。

    2.4K40

    如何使用presshellWordPress主机上执行Shell命令

    关于presshell presshell是一款针对WordPress的Shell工具,该工具可以帮助广大研究人员上传Shell文件,并在WordPress服务器/主机上轻松执行Shell命令。...工具下载 广大研究人员可以使用下列命令将该项目源码克隆至本地: git clone https://github.com/scheatkode/presshell.git 工具安装 安装该工具之前...工具使用 该工具的使用也非常简单,我们可以直接将“sh”命令以参数的形式传递给Shell即可: ❯ curl 'http://host/.../shell.php?...请求中发送,我们也建议大家使用这种方式来保证命令执行不会被记录到系统日志: ❯ curl 'http://host/....../shell.php' --data-urlencode 'cmd=ls' LICENSE README.md shell.php 除此之外,该工具还支持使用一些更加复杂的命令,: ❯ curl

    58010

    使用 python 执行 shell 命令的几种常用方式

    使用 Python 编写自动化脚本的时候,难免会需要执行一些基本的 shell 命令,而 Python 执行 shell 命令的方式有好几种,如果根据需要选择最适合的方式显得非常重要,这篇文章就来总结和对比一下几种常见的...Python 运行 shell 命令的方式。...总结 以上就是常见的 Python 执行 shell 命令的方法,当然,上述都是内置库,也有第三方库可以实现 shell 执行,但是并不建议使用,毕竟官方提供的内置库已经可以满足大部分场景。...我的建议是当执行命令比较简单而且也不是经常调用的时候,可以直接使用 os.system(),而如果是需要把执行命令的方法写到函数中经常性的调用,则应该使用 subprocess.Popen() 这种更加高级的方法...版权声明:如无特殊说明,文章均为本站原创,转载请注明出处 本文链接:https://tendcode.com/article/python-shell-cmd/ 许可协议:署名-非商业性使用 4.0

    3.2K10

    python使用nohup命令说明

    如果你正在运行一个进程,而且你觉得退出帐户时该进程还不会结束,那么可以使用nohup命令,该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。...nohup执行成功后直接点击关闭程序按钮关闭终端,会断掉该命令对应的session,导致nohup对应的进程被通知一起shutdown。...所以使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。 补充知识:Python后台运行—nohup及2 &1详解 一....nohup不规定的情况下,所以输出内容会到nohup.out 三.2 &1 0 表示stdin标准输入,用户键盘输入的内容 1 表示stdout标准输出,输出到显示屏的内容 2 表示stderr标准错误...以上这篇python使用nohup命令说明就是小编分享给大家的全部内容了,希望能给大家一个参考。

    3.7K30

    Python使用Matplotlib画多个绘图,so easy!

    本文中,我们将演示如何使用Matplotlib库绘制多个绘图。 绘制单个绘图 展示如何绘制多个绘图之前,先浏览一个演示如何使用Matplotlib绘制单个绘图的示例,以确保掌握基本原理。...如果不使用Jupyter笔记本,只需添加plt.show()开始绘制图的点之后。 绘制多个绘图 可以绘制多个图了。...subplot()函数绘制多个绘图,需要执行两个步骤: 1.首先,需要使用三个参数调用subplot()函数:(1)网格的行数,(2)网格的列数,以及(3)用于绘制的位置或轴。...例如,subplot(2,3,1)告诉Python解释器,下一个图应该绘制包含2行和3列的网格,并且该图应该出现在网格的第一个位置(第1行,第1列)。绘图位置的顺序首先从左到右,然后从上到下。...这意味着subplot(2,3,4)命令将在网格的第二行和第一列绘制绘图。 2.执行subplot()命令之后,只需使用pyplot模块调用要绘制的相应函数或图表类型。

    7.3K11

    Python执行系统命令常见的几种方法

    Python执行系统命令常见的几种方法:   (1)os.system   # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息  # 如果再命令行下执行,结果直接打印出来  例如:  >...CmdTool.log  install_log.txt  install_zabbix.sh  manage_deploy.sh  MegaSAS.log   (2)os.popen   #该方法不但执行命令还返回执行后的信息对象...\n', 'setup.sh\n']   (3)使用模块subprocess  使用方法:  >>> import subprocess  >>> subprocess.call (["cmd", "arg1...0, 'install_zabbix.sh\nmanage_deploy.sh\nmysql_setup.sh\npython_manage_deploy.sh\nsetup.sh')   注意: 当执行命令的参数或者返回中包含了中文文字...,那么建议使用subprocess,如果使用os.popen则会出现错误。

    73520

    Python执行系统命令常见的几种方法

    (1) os.system     这个方法是直接调用标准C的system() 函数,仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息。  ...import os  os.system('cat /proc/cupinfo') (2) os.popen     该方法不但执行命令还返回执行后的信息对象,是通过一个管道文件将结果返回。    ...(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')    print status,output 注意1:类unix的系统下使用此方法返回的返回值...(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,           具体原因就得去了解下系统wait()的实现了。...注意2:当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。

    35510
    领券