golangからネットワーク機器へsshする
NetOpsCoding AdventCalendar2016の4日目の記事です。
概要
NW機器へsshするプログラムの類を目にしたときに、
私が見かける範囲ではPythonやRubyを利用する例が多いように感じています。
NetOpsCoding AdventCalendar2016の4日目の記事です。
NW機器へsshするプログラムの類を目にしたときに、
私が見かける範囲ではPythonやRubyを利用する例が多いように感じています。
package main | |
import ( | |
"bytes" | |
"fmt" | |
"io" | |
"os" | |
"golang.org/x/crypto/ssh" | |
) |
自前のアプリケーションを配布する際に、手元からscpしてconfigファイルを配置してというのを避けたいのが一番の理由。
Chef/Ansibleでやる手も無くはないが、そこまで大げさにしたくないというのもある。
参考にした記事でも、以下の様に書かれており、心底同意。
#!/bin/bash | |
set -eu | |
set -x | |
REPO_URL='http://www.ftp.ne.jp/Linux/packages/ubuntu/archive/ubuntu/' | |
work=$(mktemp -d work.XXXXXX) | |
cd ${work} |
#!/bin/bash | |
set -eu | |
set -x | |
virt-install \ | |
--name yjuba-sample000 \ | |
--ram 4096 \ | |
--disk path=/var/lib/libvirt/images/yjuba-sample000.img,size=20 \ | |
--vcpus 2 \ |
.PHONY: help | |
.DEFAULT_GOAL := help | |
bpf_path = /sys/fs/bpf | |
counter_path = /sys/fs/bpf/counter | |
interface = ens3 | |
mount-bpf: ## Mount /sys/fs/bpf | |
@sudo mount -t bpf bpf $(bpf_path) |
#!/bin/bash | |
set -eu | |
set -x | |
echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4 | |
sudo apt update | |
sudo apt -y upgrade | |
sudo apt -y dist-upgrade | |
# sudo apt install -y tmux |
一旦これで、パケットのドロップとカウンタの出力が出来ることを確認した。
現状、仮想環境上で稼働させているので、性能は後日物理環境上で計測する。
yjuba@yjuba-xdp-work002:~$ sudo hping3 --flood -S -p 80 192.0.2.1
HPING 192.0.2.1 (ens3 192.0.2.1): S set, 40 headers + 0 data bytes
root@43b8d2d40134:/# uname -a
Linux 43b8d2d40134 3.11.10 #1 SMP Fri Nov 29 10:47:50 PST 2013 x86_64 x86_64 x86_64 GNU/Linux
root@fab243e04c17:/# iperf -c 192.0.2.100 -t 60
------------------------------------------------------------
Client connecting to 192.0.2.100, TCP port 5001
I hereby claim:
To claim this, I am signing this object: