我想设置一个tmuxinator项目来打开动态数量的tmux窗口。在我的场景中,我希望AWS Auto Scale Group中的每个实例都有一个窗口。
我有一个bash函数来列出我要附加到的每个服务器的私有IP。例如:
$ prod-ips
10.X.X.1
10.X.X.2
10.X.X.3
10.X.X.4
我有一个bash函数来隧道到任何这些IP:
$tunnel_to 10.X.X.1
....
works
ec2-user@10.x.x.1 ~ $
如何将从prod-ips
返回的IP列表传递到tmuxinator项目中,以便为每行输出打开1个窗口?
谢谢!
答案 0 :(得分:1)
由于项目文件为first processed as ERB,您可以执行以下操作:
create table tst (col1 varchar2(50));
insert into tst values('1');
insert into tst values('02');
insert into tst values('3');
DECLARE
fi UTL_FILE.FILE_TYPE;
fv UTL_FILE.FILE_TYPE;
i integer;
v varchar2(50);
begin
fi := utl_file.fopen('MYDIR','tst-i.csv','w');
fv := utl_file.fopen('MYDIR','tst-v.csv','w');
for rc in (select * from tst) loop
i := rc.col1;
v := rc.col1;
utl_file.PUTF(fi, i ||' \n');
utl_file.PUTF(fv, v ||' \n');
end loop;
utl_file.FCLOSE(fi);
utl_file.FCLOSE(fv);
end;
答案 1 :(得分:0)
谢谢@ pdoherty926,ERB语法就是我想要的。
看起来我的bash_profile
中定义的函数不起作用,但是如果我在tmuxinator conf中编写这些函数,那么一切正常:
这是有效的(回声是整合到一行中的prod-ips的输出):
windows:
<%- `echo 10.250.XX.X1,10.250.XX.X2,10.250.XX.X3`.split(',').each do |ip| %>
- ip-<%= ip.chomp %>: tunnel_to <%= ip %>
<%- end %>
但是这个命令不起作用:
windows:
<%- `prod-ips`.split("\n").each do |ip| %>
- ip-<%= ip.chomp %>: tunnel_to <%= ip %>
<%- end %>
但是如果我在文件中定义了prod-ips
,那么tmuxinator start命令就可以了:
windows:
<%- `aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(has("SecurityGroups")) | select(.SecurityGroups | length > 0) | select(.SecurityGroups[0].GroupName | test("<SECURITYGROUPFILTER>")) | .PrivateIpAddress' | sed -e 's/"//g'`.split("\n").each do |ip| %>
- ip-<%= ip.chomp %>: tunnel_to <%= ip %>
<%- end %>