Ubuntu 在远程计算机上执行readlink

Ubuntu 在远程计算机上执行readlink,ubuntu,remote-access,iscsi,Ubuntu,Remote Access,Iscsi,我想提取远程计算机上连接的iSCSI设备 dev_by_path="/dev/disk/by-path/ip-10.1.1.240:3260-iscsi-iqn.2013-12.com.ryussi:swift1-lun-0" DEVICE=`ssh -i key.pem root@10.0.0.2 'bash -s' << 'ENDSSH' basename $(readlink $dev_by_path) ENDSSH` 然而,如果我这样做 DEVICE=`ssh -i ke

我想提取远程计算机上连接的iSCSI设备

dev_by_path="/dev/disk/by-path/ip-10.1.1.240:3260-iscsi-iqn.2013-12.com.ryussi:swift1-lun-0"

DEVICE=`ssh -i key.pem root@10.0.0.2 'bash -s' << 'ENDSSH'
basename $(readlink $dev_by_path)
ENDSSH`
然而,如果我这样做

DEVICE=`ssh -i key.pem root@10.0.0.2 'bash -s' << 'ENDSSH'
basename $(readlink "/dev/disk/by-path/ip-10.1.1.240:3260-iscsi-iqn.2013-12.com.ryussi:swift1-lun-0")
ENDSSH`

DEVICE=`ssh-i key.pemroot@10.0.0.2“bash-s”通过引用“here document”结尾的字符串,您已经禁用了其中包含的变量的替代。$dev_by_path变量是在本地端定义的,而不是在远程执行的shell中定义的。因此,您希望在执行ssh命令之前展开它

DEVICE=`ssh -i key.pem root@10.0.0.2 'bash -s' <<ENDSSH
basename $(readlink $dev_by_path)
ENDSSH`

DEVICE=`ssh-i key.pemroot@10.0.0.2“bash-s”我是这样做的:
cmd_file=mktemp echo“basename\$(readlink$dev_by_path)”>cmd_file DEVICE=`ssh-i$STORAGE\u KEY.pem-oStrictHostKeyChecking=no-oUserKnownHostsFile=/dev/null root@$STORAGE\u ip“bash-s”<$cmd\u file
DEVICE=`ssh -i key.pem root@10.0.0.2 'bash -s' <<ENDSSH
basename $(readlink $dev_by_path)
ENDSSH`