使用tmuxinator打开动态数量的窗口

时间:2015-10-01 02:15:48

标签: tmux tmuxinator

我想设置一个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个窗口?

谢谢!

2 个答案:

答案 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 %>