2016-05-06 72 views
1

我做了这个命令。安装命令不能使用xargs

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的:姓名或不知道

服务任何想法是错误的

回答

1

不喜欢它:

.... | xargs -I'{}' mount -t nfs -o vers=4,nfsvers=4 <IP_or_hostname>:'{}' '{}' 
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采取参数。要为stdin每条线路运行mount,您可以使用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访问。