比较两个不同机器之间的路径

时间:2018-12-07 01:44:30

标签: python shell perl

我有一个文件,其中包含机器A上使用的路径的列表。我想检查机器B上的每个路径。此时,我只需要遍历机器B上的列表并检查路径是否存在(通过在Perl中使用-e标志)。问题是我在机器A上没有完全存在的路径,而是存在但路径不同。例如:

B

机器machine A: /usr/bin/pkgs/python/2.7.2/lib/site-packages/_ssl.so machine B: /usr/bin/pkgs/python/2.7.5/lib/python2.7/pkgs/_ssl.so 上的某些工具(我们称其为toolX)使用第一条路径,而机器A上的某些工具使用第二条路径。是否可以找到一种方法来警告文件B上根本不存在该文件?首先,我想从BPerl包和模块开始。我有在机器Python上运行的PerlPython的版本列表,我想提醒一些模块是否不存在。也许我应该遍历BPerl软件包(使用Python),并寻找所有具有相同名称和相同大小的相似模块。

我的一部分代码:

find

总而言之,我想提醒机器open(my $fh_d, '>', $destination) or return 0; open(my $fh_s, '<', $source) or return 0; while(my $file = <$fh_s>) { chomp($file); print $fh_d $file."\n" unless(-e $file); } close ($fh_s); close ($fh_d); 上是否不存在特定路径,但是以一种聪明的方式,因此,如果存在另一个具有相同名称的路径,则可能是这样(问题是怎么样?)。解决此问题的最佳方法是什么?我应该如何确定该路径是B还是perl路径?

1 个答案:

答案 0 :(得分:1)

据我了解,您在A上有一个目录列表,其中每个目录都要输出true或false,以确定该目录是否存在于机器B上

find /etc/ -type d > /tmp/dirlist
cat /tmp/dirlist | ssh B "perl -nle'print q().(-d\$_?q(yes):q(no)).qq( \$_)'"

...其中B是您的另一台计算机。将B替换为username@remote.server.org或其他内容。请记住,ssh可以调用远程服务器上任何具有相同stdin和stdout的命令。默认为用户外壳程序(例如bash)。 q(string)qq()的引用方法只是为了避免使用'",因为我已经用完了。