我试图通过aws cli删除aws中没有使用的一些网络接口。为了获得这个网络接口列表,我运行以下命令:
aws ec2 describe-network-interfaces --filters Name=status,Values=available --query "NetworkInterfaces[].NetworkInterfaceId" --output json
然后,我需要传递"NetworkInterfaceId“值来删除--网络接口,如:aws ec2 delete-network-interface --network-interface-id $(aws ec2 describe-network-interfaces --filters Name=status,Values=available --region eu-west-1 --query "NetworkInterfaces[].NetworkInterfaceId" --output text) --region eu-west-1。
这只删除了一个ENI,只有第一个。
我尝试过获取--生成-cli-骨架,但是描述-网络接口的输出给我一个I列表,但是删除-网络接口的输入json框架只接受一个字符串。
这里有什么想法吗?帮助是非常感谢的。提前谢谢。
发布于 2022-08-16 14:57:18
这就是我解决这个问题的方法。
#!/bin/bash
# Get the network interface IDs for all the ENIs in status available and delete them
aws ec2 describe-network-interfaces --profile my_aws_profile --filters Name=status,Values=available --region my_region --query "NetworkInterfaces[*].NetworkInterfaceId" --output text > list.txt
sed 's/\t/\n/g' list.txt > list2.txt
elements=$(wc -l < list2.txt)
while [ $elements -gt 0 ];
do
aws ec2 delete-network-interface --network-interface-id $(cut -f"$elements" list.txt) --profile my_aws_profile --region my_region
((elements--))
done
echo 'All done!'我将所有ENI in的列表存储在一个list.txt文件中。但是它用制表符存储这个列表,并且while命令从read -r中得到了一个错误,所以我做了一个sed,通过“新行”字符来更改所有选项卡,并存储在另一个文件中。现在,我需要计算这个文件需要多少行来知道我需要运行的删除网络接口的迭代次数,并将其存储在一个变量中。此变量用于将此删除作为索引运行,并将其降到0。
任何贡献都是非常感谢的!
https://stackoverflow.com/questions/73372994
复制相似问题