シスコデバイスでのファブリックの使用:「回線に無効な自動コマンドがあります」


8

どこに質問したらいいのかわかりませんでしたが、スイッチ側にあるようですので、ここから始めようと思いました。

私は、Fabricを使用して構成ファイルの更新を一括で自動化する小さなプロジェクトに取り組んでいます。私はすべてをインストールし、Pythonで正常に動作しているように見えて、いくつかのテストの作成を開始する準備ができました。ただし、Fabricを介してフィードするすべてのコマンドは、次のエラーで返されます。

行に無効な自動コマンド "/ bin / bash -l -c" X ""があります

ここでXはコマンドである私は、スイッチ上で実行しようとしています。これがなぜ失敗するのか理解できません。誰かが説明を提供できますか?これはシスコ側で設定する必要があるものですか?12.2を実行している3750スイッチでこれをテストしていますが、他にどのような詳細情報を提供すべきかわかりません。

回答:


7

ファブリックは、特定の実行モデルで設計されています。何か、デフォルトではBashがリモートで実行され、コマンドを実行することを前提としています。

ただし、リモートコマンドの内容は変更できます。CLIなどのコマンド(Cisco IOSなど)にコマンドを送信する場合は、リモートコマンドを1つのスペースに変更してみてください。

「シェル」設定については、ファブリックの環境ディクショナリを参照してください。


7

したがって、Fabricからshell = Trueというコマンドを呼び出すと、暗黙の引数があることがわかります。物事を正しく機能させるには、引数shell = Falseを指定する必要がありました。

たとえば、ここで私が実行していたコマンドが失敗しました。

def config_t():
  run("config t")

Lineを生成していたのに、無効な自動コマンド「/ bin / bash -l -c "config t"」エラーがあります。shell = Falseを含めるようにコマンドを変更します

def config_t():
    run("config t", shell=False)

この変更を行った後、すべてがスムーズに実行されました。詳細については、ドキュメントにこれを説明するセクションがあります。ファブリックドキュメント


5

私はファブリックに慣れていませんが、エラーから、選択したコマンドを実行するためにシェル(bash)を実行しようとしていることは明らかです。IOSデバイスには「シェル」がありません。CLIに実行するコマンドを指定するだけです。

(つまり、FabricはUNIX(tm)システム以外のものと通信するように設計されているようには見えません。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.