Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 不确定如何继续创建ec2 consisten快照_Perl_Amazon Ec2_Amazon Web Services_Sh - Fatal编程技术网

Perl 不确定如何继续创建ec2 consisten快照

Perl 不确定如何继续创建ec2 consisten快照,perl,amazon-ec2,amazon-web-services,sh,Perl,Amazon Ec2,Amazon Web Services,Sh,我刚刚接到一个任务,要试着调试并弄清楚为什么我们的ec2一致性快照脚本不能工作 我们的首席程序员遵循了这一点 我们有一个.sh脚本,我们希望拍摄快照,它如下所示: #!/bin/sh /opt/aws/bin/ec2-consistent-snapshot --aws-access-key-id MYACCESSKEY --aws-secret-access-key MYSECRETKEY --freeze-filesystem /vol --mysql --mysql-host localho

我刚刚接到一个任务,要试着调试并弄清楚为什么我们的ec2一致性快照脚本不能工作

我们的首席程序员遵循了这一点

我们有一个
.sh
脚本,我们希望拍摄快照,它如下所示:

#!/bin/sh
/opt/aws/bin/ec2-consistent-snapshot --aws-access-key-id MYACCESSKEY --aws-secret-access-key MYSECRETKEY --freeze-filesystem /vol --mysql --mysql-host localhost --mysql-socket /var/lib/mysql/mysql.sock --mysql-username USERNAME --mysql-password PASSWORD --description "Demo MySQL data volume: $(date +%c)" vol-MYVOL
如果通过执行
sudo./snapshot\u script.sh
来运行此操作,则会出现一个错误:

ec2一致性快照:错误:创建快照:文件不存在:at/usr/share/perl5/vendor\u perl/Net/Amazon/ec2.pm第232行

我当然遵循了这个错误,
EC2.pm中的第232行是这样的:

my$ref=$xs->XMLin($xml)

我有0个perl经验,我不知道这能做什么

任何帮助都会很好。

如果转到,您将看到
XMLin()
是XML::Simple的函数,它以文件作为参数。因此,
$xml
可能是一个包含xml文件名的变量。该文件不存在


下一步是将错误追溯到ec2 consistent snapshot的源代码中,以查看它是如何调用XML::Simple的,以及错误值是在哪里传入的。

我在CPAN上看到的代码行是252,而不是232,因此您可能不在最新版本上。综上所述,该程序试图使用大量安全参数执行“查询签名”。我怀疑您使用的身份验证密钥有问题。有一个调试标志,您可能希望打开它以生成更多消息。

我非常理解。我只是不知道为什么它不存在,因为在博客帖子和我在网上找到的其他信息中,没有提到需要安装的xml文件。好吧,很抱歉这个简单的答案,但从问题中我们不清楚你做了什么和不懂什么。没关系,我是一名程序员,所以基本语法是不言自明的,但我从未处理过Perl。我似乎没有必要这么做,因为这不是我的代码。实际上,我刚刚将旧版本的.14替换为.20,并出现以下错误:
无法在@INC中找到Net/Amazon/EC2/TagSet.pm(@INC包含:/usr/local/lib/perl5/usr/local/share/perl5/usr/lib/perl5/vendor\u perl/usr/share/perl5/vendor\u perl/usr/lib/perl5/usr/share/perl5。)在/usr/share/perl5/vendor_perl/Net/Amazon/EC2.pm第60行。开始失败--在/usr/share/perl5/vendor_perl/Net/Amazon/EC2.pm第60行中止编译。在/opt/aws/bin/EC2一致性快照第12行要求编译失败。开始失败--在/opt/aws/bin/EC2一致性快照第12行中止编译。
如何添加调试标志?我注释掉了最后两个include并收到了相同的错误,但这次是在第252行。在ec2一致性快照脚本的第190行,您可以看到一些逻辑来设置注释掉的调试标志。您需要的是
debug=>1,
来硬编码。该程序预期版本为0.11(请参阅顶部的“require”,因此升级可能不是一个好主意。您必须使用类似cpan的工具进行安装,而不是像您说的“replace”时那样进行复制和粘贴。啊,谢谢!我怎么会错过这个机会?我将尝试用版本替换它。11。