いきなり。
閑話休題
Edgerouterの設定ファイルがAWSやAzureのVPN接続で設定ファイルが手に入るが、SSHでログインをしてペーストする必要がある。どうにか自動化できないのか?とか、簡単に手持ちのIPv6アドレスを持っているサーバをインターネットに露出できないかというのが今回の趣旨
例えば、
ssh ubnt@192.168.1.1 show interfacesとしても、正しく実行されない。
調べてみるとラッパーを噛ませる必要がある様子。
通常のコマンドは
/opt/vyatta/bin/vyatta-op-cmd-wrapper
configureコマンドは
/opt/vyatta/sbin/vyatta-cfg-cmd-wrapper
となる。
実際の使い方
通常のコマンドの場合のサンプル
grepなどと組み合わせも可能。
#!/bin/bash
clear
vop=/opt/vyatta/bin/vyatta-op-cmd-wrapper
set -x
$vop show interfaces | grep eth0
configureコマンドの場合のサンプル
configureではなく、beginで始めて、endで終わるのがミソ。
#!/bin/bash
clear
vcfg=/opt/vyatta/sbin/vyatta-cfg-cmd-wrapper
set -x
$vcfg begin
$vcfg set firewall ipv6-name WANv6_IN rule 11 action accept
$vcfg set firewall ipv6-name WANv6_IN rule 11 description IPv6_test
$vcfg set firewall ipv6-name WANv6_IN rule 11 destination address XXXXXXXXXXXXXXXXXXX/128
$vcfg set firewall ipv6-name WANv6_IN rule 11 destination port 80,443
$vcfg set firewall ipv6-name WANv6_IN rule 11 protocol tcp
$vcfg commit
$vcfg end
sshでの実行
これらのファイルをcommands.txtというファイルで保存をして、以下を実行。
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ubnt@192.168.1.1 'bash -s' < commands.txt
証明書認証であればパスワードレスで実行できる。