ネットワーク管理者の生活を簡素化する私の方法を共有したいと思います。 すべての機器のログインとパスワードを一度に自動的に入力する方法を提案します。 アイデアの斬新さと新鮮さを装うわけではありませんが、私自身の決定ははるかに単純で、透明性が高く、ある程度主題に近いものです。 猫へようこそ。
なに
さまざまなメーカー(Cisco、D'link、Huaweiなど)の何百ものデバイスに管理対象機器のプロバイダーネットワークがあります。 各デバイスには正規名がありますが、DNSエントリはありません。 アドレスに一致する名前のリストがあります。 すべての(より正確には、ほぼすべての)デバイスは、 TACACS +を介して認証を提供します。 つまり、最悪の場合、ハードウェア構成を修正するには、上記のリストで名前でIPデバイスを見つけ、シャットダウンし、ユーザー名とパスワードを入力し、必要なことを行う必要があります。
何が欲しい
どういうわけか、すべてを自動化したいと思っています。最後に、このパスワードを1日に何千回も叩かないでください。 システムシェルに名前を入力するだけで、機器にアクセスする必要があります(シスコスタイル)。
問題を解決します
問題を解決するために、以下を使用します。
- もちろん、Linuxも主力製品です。
- もちろんpython-すべての管理者の問題を非常に迅速に、簡単かつ透過的に解決します。
- もちろん期待してください -自動ログインで他に何が役立ちますか?
pyhtonの場合、 pexpectが使用されます-この言語のコンテキストで期待される実装です。
まず、 IPの鉄片を受け取り、シェルに送信するスクリプトを作成する必要があります。 スクリプトコードにはコメントが付いているので、私の意見では簡単です。繰り返しの必要はありません。
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' cisco, d'link, huawei ''' # import pexpect from sys import argv # ip p=pexpect.spawn('telnet %s' % argv[1]) # tacacs+ login='mylogin' password='mypassword' ''' - . , 'D-Link' . . ''' i = p.expect(['.D-Link.','login:','Username:']) if i == 0: print 'D-Link detected' p.expect(['login:','UserName:']) p.sendline(login) p.expect(['Password:','PassWord']) p.sendline(password) i = p.expect(['.4#', '.3#','.Fail.']) if i == 2: ''' - tacacs, '.Fail.' - . ''' print 'Wrong credentials! Trying default' p.expect(['login:','UserName:']) p.sendline('default') p.expect(['Password:','PassWord']) p.sendline('default') ''' - . #3 - , #4 - ''' elif i == 1: print 'enabling admin' p.sendline("enable admin") p.expect('Password:') p.sendline('admin_pass') else: pass p.interact() elif i == 1: ''' cisco - enable , ''' print 'Cisco detected' p.sendline(login) p.expect('Password:') p.sendline(password) p.interact() elif i == 2: ''' huawei , sys ''' print 'Huawei detected' p.sendline(login) p.expect('Password:') p.sendline(password) p.expect('.') print 'enabling sys' p.sendline('sys') p.interact()
ここで、スクリプトを実行してgland ipパラメーターを渡すと、疑いなくシェルに直接入ります。 タスクに戻りましょう。 アクセスするには、正規名を入力するだけです。 このために、 bashエイリアスを使用します。
鉄片ごとに、bashrcに次の行を追加します: "
alias _="autologin ip_"
"、スクリプトをbinディレクトリに配置します(たとえば、/ usr / bin / autologin)。
シェルに鉄片の名前を入力するだけで、不必要な質問なしで鉄片にアクセスできます。
あとがきの代わりに
python言語の開発者に感謝します。多くの、些細なことではないが、タスクは非常に簡単に解決されます。 ご清聴ありがとうございました、私はあなたの批判を待っています、私はあなたの意見を知ってうれしいです。