RENAT¶
RENAT install battle¶
yum -y install centos-release-scl-rh
yum -y install python27
python --version
yum install -y epel-release
yum install -y gettext gcc net-snmp net-snmp-devel net-snmp-utils czmq czmq-devel python27-tkinter xorg-x11-server-Xvfb ghostscript firefox-60.2.1-1.el6.centos.x86_64 httpd vim git
pip install numpy pyte PyYAML openpyxl Jinja2 pandas paramiko lxml requests pdfkit pyvmomi PyVirtualDisplay
# yum search python | grep -i devel
# yum install -y python-devel (when errors occored at next step)
pip install netsnmp-py==0.3
groupadd techno -o -g 1000
useradd robot -g techno
passwd robot
cd
mkdir work
cd work
git clone https://github.com/bachng2017/RENAT.git renat
basic setup¶
- $RENAT_PATH/config/device.yaml
device:
hoge1:
type: hoge
description: hoge1
ip: x.x.x.x
- $RENAT_PATH/config/auth.yaml
auth:
plain-text:
default:
user: <user-name>
pass: <password>
- $RENAT_PATH/config/template.yaml
access-template:
ssh-host:
access: ssh
auth: public-key
profile: default
prompt: \$
append:
init: unalias -a
juniper:
access: telnet
auth: plain-text
profile: default
prompt: "(#|>) "
append: ' | no-more'
init:
cisco:
access: ssh
auth: plain-text
profile: default
prompt: "*(#|>) "
append:
init:
snmp-template:
juniper:
mib: ./mib-Juniper.json
community: public
poller: renat
cisco:
mib: ./mib-Cisco.json
community: public
poller: renat
python3.6 にしてみた¶
- 相変わらずdecoratorで怒られた
python3.6 -m pip install decorator
で解決.
問題点¶
ssh proxy を利用する際に問題がある.
- device に下記のように書くとerrorとなる.
vthunder_proxy: access: ssh auth: plain-text profile: xxx proxy_cmd: "/usr/bin/ssh -l jp7fkf -p xxxxx -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p x.x.x.x" prompt: ".*(#|>)" login_prompt: "Username:" password_prompt: "Password:" append: init:
- 問題はVChannel.pyのssh connection 部分にある.
### SSH if _access == 'ssh': out = "" local_id = self._ssh.open_connection(_ip,alias=name,term_type='vt100',width=w,height=h,timeout=_timeout) # SSH with plaintext if _auth_type == 'plain-text': if _proxy_cmd: user = os.environ.get('USER') home_folder = os.environ.get('HOME') port = 22 _cmd = _proxy_cmd.replace('%h',_ip).replace('%p',str(port)).replace('%u',user).replace('~',home_folder) out = self._ssh.login(_auth['user'],_auth['pass'],proxy_cmd=_cmd) else: _cmd = None out = self._ssh.login(_auth['user'],_auth['pass'],False)
- proxy_cmd というargument はそもそもSSHLibraryのloginメソッドに存在しない(# 2018-12-14 現在).
- proxy を自分で実装する必要がある.
- ワークアラウンド的対処法としてrenatを実行するホストでsshuttle等をバックグランド実行しておき,renatには通常通りsshを実行させるという手段を取ることができる.
port番号指定できない
- SSHLibraryのself.current.config.portを指定してやればいいっぽい.