【无标题】使用Go (或者 Python) 执行外部命令,直接模式和 Shell模式的区别

news/2024/9/19 4:53:11/ 标签: golang, python, 服务器

有时,我们需要通过编程语言执行外部程序、命令或脚本。

Go 语言里提供了 “os/exec” 库,Python 里面也提供了 subprocess 这样的库。

但在具体调用外部命令时,有两种方式:

  • 直接调用外部命令
  • 通过 Shell 调用外部命令

以 Go 语言为例:

cmd := exec.Command("./myscript.sh", "arg1", "arg2") // 直接执行外部命令

或者

cmd := exec.Command("sh", "-c", "./myscript.sh arg1 arg2")// 通过 Shell 调用外部命令

两者的区别如下:

直接运行通过 SHELL 运行
参数必须以字符串数组的形式传入,不能把多个参数用空格拼接成一个字符串把命令和参数合并居一个字符串,传给 Shell 执行
不支持 Shell 的特性,比如环境变量,通配符,管道,重定向支持 Shell 特性,比如环境变理,通配符,管道,重定向
把参数直接传给命令,不会对参数进行解析,比如根据空格把一个字符串分成多个参数对整个命令行字符串进行解析,但不同的操作系统 / Shell 可能把字符串解析成不同的结果
不会引起 Shell 注入可能面临 Shell 注入的风险
继承 Go 的环境继承 Shell 的环境变量

我个人喜欢直接执行的方式。


http://www.ppmy.cn/news/1520568.html

相关文章

C#之中SqlConnection的Close和Dispose的区别和在使用using语句管理SqlConnection对象时,如果发生异常,连接对象会怎样?

SqlConnection的Close和Dispose的区别 在C#中,SqlConnection对象的Close和Dispose方法都可以用来释放数据库连接资源,但它们的作用和使用场景有所不同。 Close 方法 SqlConnection.Close方法用于关闭与数据库的连接。当你调用这个方法时,它…

nginx配置白名单服务

http { # 其他配置… # 定义一个名为 whitelist 的共享内存区域 limit_zone whitelist $binary_remote_addr 10m;server {listen 80;server_name example.com;# 白名单配置location / {# 设置只允许特定 IP 访问allow 192.168.1.100; # 允许的 IPallow 192.168.1.10…

Spring Cloud全解析:网关之GateWay过滤器

GateWay过滤器 路由过滤器可用于修改进入的HTTP请求和返回的HTTP响应,只能指定路由进行使用,由GatewayFilter的工厂类来产生,Gateway官方提供了很多的路由过滤器,也可以实现自己的自定义过滤器 内置过滤器 请求头/响应头过滤器…

浅谈常见的分布式ID生成方案

一、UUID UUID是通用唯一标识码的缩写,其目的是让分布式系统中的所有元素都有唯一的辨识信息,而不需要通过中央控制器来指定唯一标识。 优点: (1)降低全局节点的压力,使得主键生成速度更快; &…

作为HR如何解决薪资谈判的僵局

作为HR如何跟候选人谈薪资问题,特别候选人的期望值,和公司对岗位的设定范围存在不对等的情况下,HR和候选人的薪资谈判往往就陷入僵局。面对这种情况,是直接放弃,还是有努力的空间呢? 在面对薪资谈判僵局时…

使用PyTorch从零构建Llama 3

我们上次发了用PyTorch从零开始编写DeepSeek-V2的文章后,有小伙伴留言说希望介绍一下Llama 3。那么今天他就来了,本文将详细指导如何从零开始构建完整的Llama 3模型架构,并在自定义数据集上执行训练和推理。 [图1]:Llama 3架构展示…

Nginx中间件配置

Nginx中间件配置 概要相关内容技术细节链接 概要 用于Linux服务器,Nginx中间件搭建。 相关内容 配置涵盖域名配置,TLS配置,及配置安全的加密算法,处理跨域问题,请求头问题等 技术细节 nginx.conf 配置文件 user …

PyTorch常用库函数:torch.acos()的详解实战使用

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言一、函数简介1.2 函数语法1.3 参数说明 二、 示例代码2.1 注意事项 总结 引言 PyTorch 是一个流行的深度学习框架…

Node.js中的SQLite库:安装、对比与选择指南

嘿,各位Node.js的江湖好汉们,今天咱们来聊聊如何在Node.js中安装SQLite库,并且来一场SQLite库的PK大战,看看哪个库才是你的“菜”! 一、安装SQLite库:轻松加愉快 想要在Node.js中使用SQLite数据库&#x…

Proxifier代理配置

Proxifier代理配置 ①:finalShell 建立隧道 1.连接服务器 10.8.96.147 root/Iptvyg189 2.配置隧道 类型:SOCKS5监听端口:自定义一个随便绑定ip:本机 127.0.0.1 ②:Proxifier代理配置 1.配置文件 > 代理服务器 &g…

【Vue】Vue3.5 新特性

useId 为 每一个 vue 文件创建一个唯一的 id&#xff1a; app.vue import {useId} from "vue"; import Child from "/Child.vue";const comId useId(); console.log(">(App.vue:5) comId", comId);// ...<Child />useTemplateRef u…

尚品汇-项目目前存在问题、引入MQ(四十二)

目录&#xff1a; &#xff08;1&#xff09;目前存在的问题 &#xff08;2&#xff09;消息队列解决什么问题 &#xff08;3&#xff09;消息队列工具 RabbitMQ &#xff08;4&#xff09;搭建mq测试环境service-mq 下面我们先做的是前面后台管理系统商品上下架的没完成的…

【nnUNet】nnUNet的出现

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ&#xff1a;870202403 公众号&#xff1a;VTK忠粉 前言 本文分享nnUNet的一些基本情况&#xff0c;以便更好的了解&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&#xff01;…

零基础5分钟上手亚马逊云科技-基础设施即代码开发

简介&#xff1a; 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我会每天介绍一个基于亚马逊云科技…

Excel中.xls和.xlsx文件格式的区别,及C++操作Excel文件

‌文件结构和兼容性‌&#xff1a; XLS是Excel 97-2003版本的文件格式&#xff0c;而XLSX是Excel 2007及以上版本的文件格式。XLS格式是向下兼容的&#xff0c;意味着较新的Excel版本可以打开XLS文件&#xff0c;但较旧的版本无法打开XLSX文件。相反&#xff0c;XLSX格式是向上…

Spring Cloud Gateway之路由配置

Spring Cloud Gateway支持多种方式的路由配置&#xff0c;允许根据各种条件和需求来定义和控制请求的路由行为。以下是Spring Cloud Gateway中常用的路由配置选项和相关功能&#xff1a; 基本路由配置 路由的基本配置通常包括路由ID、目标URI、谓词&#xff08;Predicates&am…

VirtualBox Debian 自动安装脚本

概览 相较于原脚本&#xff08;安装目录/UnattendedTemplates/debian_pressed.cfg&#xff09;更新如下内容&#xff1a; 配置清华镜像源配置仅主机网卡&#xff08;后续只需添加仅主机网卡即可&#xff09;配置Root用户远程登录配置用户sudo组 脚本 debian_pressed.cfg ##…

基于layui实现简单的万智牌生命计数器页面

对照手机App“旅法师营地”的万智牌生命计数器窗口&#xff08;如下图所示&#xff09;&#xff0c;使用layui、jQuery等实现简单的万智牌生命计数器页面。   主要实现的功能如下&#xff1a;   1&#xff09;点击左右两侧的-1、1、-5、5区域更新左右两侧生命值&#xff1…

银河麒麟v10-sp3-x86系统安装k8s-1.30.4

X86-64和arm架构的区别 x86-64架构&#xff1a; 设计理念&#xff1a;x86-64架构起源于Intel的x86架构&#xff0c;并对其进行了64位扩展。这种架构的设计侧重于高性能和灵活性&#xff0c;适合处理复杂的计算任务。 性能特点&#xff1a;x86-64架构的处理器通常提供高性能的…

9 月 7-8 日,Rust China Conf 2024 来啦!

大会介绍 Rust China Conf 2024 由 Rust 中文社区发起主办、知名企业和开源组织联合协办&#xff0c;是年度国内规模最大并唯一的 Rust 线下大型会议&#xff0c;深受 Rust 中文社区开发者与相关企业的喜爱与推崇。自 2020 年起&#xff0c; RustChinaConf 大会已经连续举办四…