1

我正在尝试在我团队的服务器上编写一些东西并且遇到了一些困难。

对于我正在编写的部分脚本,我需要让用户通过切换用户sudo su APPUSER,然后运行几个命令。但是, sudo 在我们的服务器上相当锁定,我无法运行类似:sudo su APPUSER -c COMMAND. 我已经要求解决这个问题,系统管理员总是说“不”。

我目前正在使用 perl 来编写脚本,我需要进入 appuser 而不是开发人员的用户来运行大约三个命令。我可以通过连续执行每个命令在命令行上做到这一点,但我不知道如何让 perl 做到这一点。

如何让 perl 在命令行上执行多个命令,使其在前一次执行后不会丢弃 shell/状态?即,运行多个system呼叫不起作用。

4

2 回答 2

1

我找到了解决方案。

打开一个 bash 进程并对其进行读写:

#!/usr/bin/perl
use strict;
use warnings;

open(BASH, "|-", "bash");

print BASH "sudo su APPUSER\n";
print BASH "touch /home/APPUSER/sudobashtest\n";
close(BASH);
于 2013-08-28T17:16:55.363 回答
0

这不起作用吗?

system("sudo su APPUSER && command1 && command2");
于 2013-08-28T16:37:49.953 回答