首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用perlscript执行多个unix命令

使用perlscript执行多个unix命令
EN

Stack Overflow用户
提问于 2013-06-11 17:41:03
回答 2查看 709关注 0票数 0

我是perl的新手。我正在尝试创建一个perl脚本,它将在一些unix服务器上执行多个unix命令来创建VNC会话。

这是我的脚本-

代码语言:javascript
复制
#!/usr/bin/perl -w
use Carp;
use strict;
use warnings;

# here get the parameters idsid
my $IdsId=$ARGV[0];


#excecute the commands here

my $user=`su -l $IdsId`;
my @finalresult=`vncserver -randr      1024x768,800x600,1024x768,1152x824,1280x1024,1280x800,1440x900,1400x1050,1600x1200,1920x1200`;

print "@finalresult";

但是当我执行这个脚本时,它不工作。

请谁来帮帮我。

EN

回答 2

Stack Overflow用户

发布于 2013-06-11 20:40:49

我希望看到你执行以下命令:

代码语言:javascript
复制
exec "su", "-l", "$IdsID", "-c", "vncserver -randr ...";

这使得Perl脚本在很大程度上无关紧要,因为您可以在shell中将其编写为:

代码语言:javascript
复制
exec su -l "${1:-$USER}" -c "vncserver -randr ..."

使用sudo可能比使用su更好。不同之处在于,使用su时,您必须知道其他用户的密码;使用sudo时,您只需知道自己的密码(并且系统管理员必须授予您使用sudo执行手头任务的权限)。

票数 1
EN

Stack Overflow用户

发布于 2013-06-11 17:53:02

当您使用反引号时,将创建一个子shell,并暂停主程序。当子shell中的进程完成时,控制返回到主程序。因此,在本例中,我假设su永远不会退出,vncserver不会以您想要的用户身份运行(也不会退出以将控制权返回给perl脚本) --因为它是在另一个从未发生su的子shell中执行的。

您可能需要在同一行中执行这些命令:

代码语言:javascript
复制
my @result = qx(su -l $IdsId; vncserver -randr ....);

不过,这是否有效,你必须自己去弄清楚。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17041014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档