gpt4 book ai didi

perl - 在递归 ssh 命令中引用 bash 和 perl

转载 作者:行者123 更新时间:2023-11-29 09:03:39 26 4
gpt4 key购买 nike

我正在编写一个 perl 脚本来使用 ssh 登录服务器并在服务器上执行一些 shell 命令。问题是服务器只能通过首先登录到另一台服务器来访问。(我正在使用 ssh key 进行无密码登录)。

以下 bash 脚本工作正常,并说明了问题:

#! /bin/bash
server1="login.uib.no"
server2="cipr-cluster01"
ssh "$server1" "ssh $server2 \"echo \\\"\\\$HOSTNAME\\\"\""

它将正确的主机名打印到我的屏幕上:cipr-cluster01。然而,当试图在 Perl 中做同样的事情时:

my $server1="login.uib.no";
my $server2="cipr-cluster01";

print qx/ssh "$server1" "ssh $server2 \"echo \\\"\\\$HOSTNAME\\\"\""/;

我得到以下输出:login.uib.no。所以我想,perl 脚本的引用存在一些问题..

最佳答案

qx 类似于双引号。你必须再反斜杠一些:

print qx/ssh "$server1" "ssh $server2 \"echo \\\\"\\\$HOSTNAME\\\\"\""/;

使用单引号可能会大大简化命令:

print qx/ssh "$server1" 'ssh $server2 "echo \\\$HOSTNAME"'/;

关于perl - 在递归 ssh 命令中引用 bash 和 perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23597777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com