2019年11月8日 星期五

S小魚仔S Ansible 開發 SNMP 獲取交換機數據

使用「ansible」應用「snmp_facts」模塊需要安裝「Python」依賴「pyasn1 0.4.7」、「pysnmp-4.4.1.tar.gz」,採用offline install」安裝方式因為客戶環境不一定能上網。
PS. 需要安裝「gcc」編譯程序唷

#====安裝 python 「pyasn」依賴模塊====
tar -xzf /opt/pyasn1-0.4.7.tar.gz -C /opt/
cd /opt/pyasn1-0.4.7
python setup.py install

#====安裝 python 「snmp」模塊====
tar -xzf /opt/pysnmp-4.4.1.tar.gz -C /opt/
cd /opt/pysnmp-4.4.1
python setup.py install

#===開發「ansible playbook
PS. 支持「snmp」v1/v2/v2c/v3 協議

#編輯「vi /etc/ansible/hosts

[cisco]
192.168.6.252 ansible_connection=local

#編寫「ansible playbook


- hosts: localhost
  gather_facts: no
  vars:
    snmp_host: 192.168.6.252
    snmp_community: public
    snmp_version: v2c
  tasks:
   - name: Gather facts with SNMP version 2
     snmp_facts:
       host: "{{snmp_host}}"
       version: "{{snmp_version}}"
       community: "{{snmp_community}}"
     register: snmp_log
   - name: print snmp_log
     debug:
       var: snmp_log

#顯示結果


相關參考資料
qiita.com」-「AnsibleでCisco IOSの情報収集

2019年10月31日 星期四

S小魚仔S Ansible 開發 H3C (華三) 交換機

很多初學 ansible 的都會誤以為,ansible 是 ssh 到目的主機上,然後直接運行 cli 命令,其實並不是,ansible 對管理網路設備雖然不需要安裝 agent,但是需要其擁有「python」。「ansible」主機會把需要執行的「module」(完成特定功能的python程式) 傳送到目的主機去執行,因此我們其實需要一個「moudle」能完成「ssh」到網路設備上並下發指定命令的功能。Ansible Host 安裝 Python 我們完全可以透過「Ansible Host」下發指令,這樣就不需要「ansible」通過「paramiko」傳輸「module」,只需要在設定檔(vi /etc/ansible/hosts)中指定「connection」為「local」即可。
PS. H3C 網路設備必須啟用「ssh」登入

1. 修改「vi /etc/ansible/hosts」設定「交換機」IP  為 local


2. 編輯「vi /etc/ansible/ansible.cfg」啟用「library」模組

3. 建立「my_modules」資料夾

mkdir -p /usr/share/my_modules/

4. 下載 GitHub 作者「luffycjf」( network_automation ) 開發「模塊

cd /opt ; git clone https://github.com/luffycjf/network_automation

5. 搬移「ssh_command.py」模塊,放到「ansible library」位置

mv /opt/network_automation/module/ssh_command.py /usr/share/my_modules/

6. 編寫「ansible - playbook
PS. Playbook 採用 yml 描述語言檔,縮排位置一定要對齊
- hosts: localhost
  gather_facts: no
  vars:
   - ssh_port: 22                    #ssh端口号
     ssh_username: "test"            #设备用户名
     ssh_password: "test2019"        #设备密码
     device_address: "172.21.6.2"    #设备地址
     command_interval: 0.5           #命令之间等待的最小间隔,默认0.5s,可以不改
  tasks:
    #     command: ''                                   #指定操作的命令。
    #     configfile: '/opt/h3c_switch/h3c_config.txt'  #指定操作「h3c」配置腳本。
    - name: display version
      ssh_command:
        port: "{{ssh_port}}"
        address: "{{device_address}}"
        username: "{{ssh_username}}"
        password: "{{ssh_password}}"
        command_interval: 0.1
        command: 'display ip interface brief'
        configfile: ''
      register: h3c_log
 
    - name: print h3c_log
      debug:
        var: h3c_log.stdout_lines
      with_items: h3c_log.results
7. 執行結果


參考資料
Cheng's Blog」-「网络设备配置建模 Ⅰ
Ansible Web Site」-「Ansible for Network Automation 

2019年10月28日 星期一

S小魚仔S 華為 eNSP 模擬器 配置 「SSH」

由於專案關係會利用「ansible」開發「華為」交換機,但是又沒有多餘經費購買「硬件」,這時候找到「eNSP」華為網路設備模擬器,「eNSP」模擬器好處是可以橋接「實體」網路環境,由於「eNSP」模擬器已經沒有投入後續開發,建議最佳系統環境「Windows 7」,可以使用「vmware workstation」模擬系統,進行安裝配置,安裝「eNSP」過程省略 ( 無腦安裝「下一步」到底就可以了 )。

1. 如何配置「eNSP」橋接「實體網路



這裡需要配置「Cloud」( inbount 和 outbound 介面卡 )

配置「inbount

配置「outbound

映射 ( mapping )「inbount」與「outbound

接著拉取「路由」設備
PS.建議不要使用太舊設備型號,因「eNSP」模擬器 使用太舊設備型號指令有問題。

工具列欄位「顯示」端口名稱

使用「Auto」網路線連接

啟用「路由器

2. 如何配置「路由器」SSH 協議

2.1 配置「SSH」協議之前必須要有 IP Address 否則怎麼透過「IP」連線,首先我們在「Ethernet 0/0/0」介面 配置「IP」

system-view 
interface GigabitEthernet 0/0/0
ip address 192.168.8.3 255.255.255.0
quit

2.2 配置「SSH」連線協議

#進入編輯「模式」
system-view

#先根据加密算法生成秘钥对,用于传输数据时加密保护,保存在交换机中但不保存在配置文件中
rsa local-key-pair create


#配置VTY用户連接數,设置用户验证方式AAA。指定VTY类型用户界面只支持SSH协议,设备将自动禁止telnet功能。
user-interface vty 0 4
authentication-mode aaa
protocol inbound ssh

#回到上一層
quit

#進入「aaa」
aaa

#建立「使用者」(admin) 與「密碼」(123456)
local-user admin password cipher 123456

#指定「admin」(帳戶) 採用「ssh」連線
local-user admin service-type ssh

#給予「admin」最高權限 0-15
local-user admin privilege level 15

#指定「admin」(帳戶) 採用「ssh」密碼驗證
ssh user admin authentication-type password

#啟用「ssh」
stelnet server enable

#檢查「admin」ssh 配置方法
display ssh user-information admin

#查看全局配置信息
display ssh server status

#設定完成使用「Putty」工具連接即可


PS. 若使用「路由器」設備遇到「####」等待「3分鐘」還沒進去「CLI」可以參考以下建議設定



完成上述設定,重新啟動「eNSP」即可

#=====配置「交換機SSH 協議=====

system-view

rsa local-key-pair create

user-interface vty 0 4
authentication-mode aaa
protocol inbound ssh
quit

aaa
local-user admin password cipher 123456
local-user admin service-type ssh
local-user admin privilege level 15
#允許「admin」使用「ssh」、「sftp」
ssh user admin service-type all
ssh user admin authentication-type password
stelnet server enable


參考資料

2019年8月29日 星期四

S小魚仔S Centos 7 離線安裝 Python 3

Centos 7 已內建 Python 2.7,經常去客戶現場需要使用 Python 3 但是都無法連網,紀錄完整安裝過程。
PS.記得安裝前檢查「yum list gcc」是/否安裝,因編譯安裝需要仰賴「gcc」。

#=====安裝「Python 3.7.4」(離線安裝)===
tar Jxvf /opt/Python-3.7.4.tar.xz -C /opt
cd /opt/Python-3.7.4
./configure --enable-optimizations --with-ssl=openssl
make && make install

#重新設定「軟連結」指令
mv /usr/bin/python /usr/bin/python_old
ln -s /usr/local/bin/python3 /usr/bin/python

#檢查「Python」版本
python -V

#更新「python 3.x」版本「yum」會無法使用,因「yum」使用「python2」這裡還需要替換「/usr/bin/yum」 與「/usr/libexec/urlgrabber-ext-down

vi /usr/bin/yum

#!/usr/bin/python2.7

vi /usr/libexec/urlgrabber-ext-down

#!/usr/bin/python2.7

#=====安裝「setuotools」(離線安裝)===
tar -xzf /opt/setuptools-30.4.0.tar.gz -C /opt/
cd /opt/setuptools-30.4.0
python2 setup.py build
python2 setup.py install

#=====安裝「pip」(離線安裝)===
tar -xzf /opt/pip-9.0.3.tar.gz -C /opt/
cd /opt/pip-9.0.3
python2 setup.py install

#顯示「setuptools」版本
pip show setuptools

#顯示 「pip」版本
pip -V

2019年8月20日 星期二

S小魚仔S Cisco SG250-08 注意事項

不斷在研究「SG250」也不斷在採坑,總結一下遇到「問題」。

#===設定「Interface Vlan IP」注意事項===
PS. SG250 支持多組「Interface Vlan IP
使用「SG250」預設 IP - 192.168.1.254 ( VLAN 1 ) ,第一次設定「Interface VLAN IP」會自動取消原本「Vlan 1 - Interface Vlan IP」造成「192.168.1.254」無法登入,這個問題我遇到起碼三次剛開始不懂最後按上「reset」(超過10秒) 回復原廠配置,於是我找這篇文章「Unable to create IPv4 Interface entries on SG300-20 switch」,If the sg300 or 500 device has the default IP  and you add another IP interface ( on a vlan or on a port) it will determine that static or dhcp interface is the management interface and the 'default' address will not work any more。
正確設定方式,請參考這篇影片「Cisco Tech Talk: Configuring Inter-VLAN Routing on SG250 Series Switches」。請先配置「VLAN」然後「端口」選擇「添加」新 VLAN,避免第一次設定「Default Interface VLAN IP」失效,第二次配置後則沒有任何問題。

S小魚仔S Cisco SG250-08 升級「Firmware」

最近剛入手「Cisco SG250-08」以前就一直在尋找「小型家用」因為想練習「思科」指令,但是此款卻沒有「Console Port」升級 firmware2.3.5.56」以上版本支持「telnet」與「ssh」。

SG250 - Deafult Management IP ( 192.168.1.254 )
進入「Web UI」( Switch Management ) 設定介面
PS. Default User cisco、Pwd cisco



升級完成就可以開啟「ssh


注意
「SG250-08」不支持「POE」
「SG250-08HP」支持「POE」( 802.3at 與 802.3af )

參考資料

2019年7月18日 星期四

S小魚仔S Gitlab 客戶端代碼提交工具

經歷三個小時奮戰..大概知道「Git for Windows」與「TortoiseGit」客戶端工具怎麼使用了。

GitLab 提供兩種方式「SSH」、「HTTP」下載 和 更新「代碼」此篇使用「SSH」方式。


1. 安裝「Git for Windows


2. 安裝「TortoiseGit



安裝完成先「取消啟動配置」

安裝「語言包


3. 配置 TortoiseGit「用戶名、郵件

空白處 「右鍵」=>「TortoiseGit」=>「Settings

啟動「配置精靈

TortoiseGit」必須搭配「Git For Windows」,這裡必須檢查「Git For Windows」客戶端有沒有裝成功

配置「用戶訊息」( 名稱、Email ) 可隨意填寫


4. 配置 TortoiseGit「PuTTY」( 公鑰 與 私鑰 配對 )

使用「Putty」建立「公鑰」與「私鑰

點選「Generate」產生

記得在「紅色框框」拼命點擊「滑鼠」=>「左鍵」( 加快演算法速度 )

複製「紅色」( 公鑰 )

登入「GitLab」服務器,在「個人帳戶」=>「置配」=>註冊「公鑰


接著我們將「」存起來 ( 很重要不要弄丟 )

這邊點選「完成」即可

第一次使用請先「Git Clone」GitLab 檔案

1. 貼上「GitLab」ssh 「URL
2. 加載「」 ( *.ppk )

授權「KEY」認證

下載「成功

5. 選擇「提交」並「推送

如果有檔案需要「更新」到「GitLab」使用「Git 提交」 

1. 輸入「描述
2. 選擇「更新」檔案
3. 選擇「提交並推送


參考資料