【发布时间】:2015-07-16 02:25:14
【问题描述】:
当我在终端中运行它时,它可以工作
/usr/bin/sftp -o "IdentityFile=/opt/apps/doc/bin/id_rsa" -b /opt/apps/doc/bin/batch.txt DMS2@convpc1
但是,当我在 perl 脚本中运行它时,什么也没有发生
system("/usr/bin/sftp -o \"IdentityFile=/opt/apps/doc/bin/id_rsa\" -b /opt/apps/doc/bin/batch.txt DMS2@convpc1");
我花了一整天的时间试图弄清楚如何对我的文件进行 sftps,但我无法找出问题所在?有什么建议吗?
编辑:我做了更多的测试。我将整个命令放在一个 test.sh 文件中。我从终端运行了 test.sh,它可以工作。我将 perl 文件更改为 system("/opt/app/doc/bin/test.sh") 然后运行它,没有任何反应。我在系统命令之前添加了打印语句,它们可以工作,但是系统命令仍然不起作用,因为我没有看到我的文件被移动。
【问题讨论】:
-
将
system替换为print是您试图找出问题的方法之一吗? -
您可以考虑尝试Net::SFTP 而不是使用system.通常,使用原生 Perl 模块而不是逃逸到系统会更有效,在这种情况下,系统调用是有问题的,因此可能也值得调查以解决您的问题。