我做了这个命令。
aws ec2 describe-instances --filters "Name=tag-value,Values=jenkins" | jq '.Reservations[0].Instances[0].PrivateIpAddress' | mount -t nfs -o vers=4,nfsvers=4 xargs:/mnt/gradle /mnt/gradle
但似乎xargs不能在mount命令中使用。 这是错误
mount.nfs:无法解析服务器xargs:名称或服务未知
知道出了什么问题
答案 0 :(得分:1)
这样做:
.... | xargs -I'{}' mount -t nfs -o vers=4,nfsvers=4 <IP_or_hostname>:'{}' '{}'
答案 1 :(得分:1)
你不太清楚自己要做什么。 但首先让我们通过打破这条线来理解这条线:
aws ec2 describe-instances --filters "Name=tag-value,Values=jenkins" | \
jq '.Reservations[0].Instances[0].PrivateIpAddress' | \
mount -t nfs -o vers=4,nfsvers=4 xargs:/mnt/gradle /mnt/gradle
您正在尝试使用mount
命令。
这不起作用,因为mount
命令不从stdin
获取参数。要为mount
的每一行投放stdin
,您可以使用xargs
:
aws ec2 describe-instances --filters "Name=tag-value,Values=jenkins" | \
jq '.Reservations[0].Instances[0].PrivateIpAddress' | \
xargs -I{} mount -t nfs -o vers=4,nfsvers=4 '{}':/mnt/gradle /mnt/gradle
我假设stdin
中的行是ip地址。例如,如果它包含行192.168.1.10
,则将执行以下命令:
mount -t nfs -o vers=4,nfsvers=4 192.168.1.10:/mnt/gradle /mnt/gradle
但是,如果输入中有多行,我不确定您预期会发生什么。通过我给出的这个示例,只有最后一个服务器可以通过本地挂载点/mnt/gradle
访问。