Linux リモート コントロール Windows システム プログラム (3 つの方法)

Linux リモート コントロール Windows システム プログラム (3 つの方法)

場合によっては、Windows システム上のプログラムを Linux 上でリモートで実行する必要があります。

方法1:

Python の winrm モジュールを使用する場合、前提条件として、事前に winrm サービスを設定する必要があります。設定方法は Baidu で検索してください。winRM サービスは、Windows Server 上の PowerShell のリモート管理サービスです。 Python スクリプトは、winRM モジュールに接続して Windows コマンド ラインを操作します。

winrm をインポートする
def cmd_views(ip,cmd_comand):
  win = winrm.Session('http://'+ip+':5985/wsman', auth=('user', 'password'))#パラメータはユーザー名とパスワードです r = win.run_cmd(cmd_comand) # cmdコマンドを実行します =
  return r.std_out # 取得した情報を出力します ip="xxx.xxx.xx.xx"
cmd_comand=r"ipconfig"#コマンドを実行 a=cmd_views(ip, cmd_comand)
print(cmd_comand)
印刷(タイプ(a))
印刷(a)

私のテストの結果、このモジュールはいくつかの単純なコマンド、つまり基本的に入力後すぐに結果に応答できる種類のコマンドしか実行できないことがわかりました。少し複雑な状況に遭遇すると、プロセスがクラッシュします。

方法2:

操作は、Python の telnetlib ライブラリを通じて実行されます。前提条件は、Windows システムで Telnet 設定を行うことです。1. Telnet クライアントとサーバーをインストールします。 2 Telnet ユーザーの権限を設定します。方法が分からない場合は、Baidu で検索して自分で設定してください。

# -- コーディング: utf-8 --
telnetlib、time をインポートする

def telnetlib_views(IPアドレス、ユーザー、パスワード、コマンド名):
  tn = telnetlib.Telnet(IPアドレス)
  a=tn.read_until(b'ログイン:')
  tn.write(user.encode('ascii') + b'\r\n')
  tn.read_until(b'パスワード:')
  時間.睡眠(5)
  tn.write(password.encode('ascii') + b'\r\n')
  時間.スリープ(2)
  tn.write(cmdname.encode('ascii') + b'\r\n')
  tn.close()
cmdname=r'ifconfig'#コマンドtelnetlib_views(ipaddress="xxx.xxx.xxx.xxx", user="xxx", password="xxxx",cmdname=cmdname)を実行

コマンド呼び出しが完了し、プログラムが終了するまで待ちます。

方法3

wmi モジュールを使用すると、欠陥は windows-windows を通じてのみ解決でき、linux-windows は機能せず、linux 関連のモジュールをインストールできません。

wmi をインポートする
def sys_version(IPアドレス、ユーザー、パスワード、コマンド名):
  conn = wmi.WMI(コンピュータ=IPアドレス、ユーザー=ユーザー、パスワード=パスワード)
  試す:
    cmd_callbat = r"cmd /c call %s" % cmdname
    print("現在実行されている bat コマンドは:",cmd_callbat)
    conn.Win32_Process.Create(コマンドライン=cmd_callbat)
  except 例外を e として:
    印刷する
cmdname= r"xxx.bat"#コマンドsys_version(ipaddress="xxx.xx.xx.xx", user="xx", password="xxx",cmdname=cmdname)#を実行します

コマンドが呼び出され、待機せずにプログラムが終了します。これは方法 2 とは異なります。欠点は、ライブラリが Linux にインストールできないことです。

アプリケーション シナリオは実用的です。Windows システム上の PDF ファイルを Linux に転送するために、Linux 上でプログラムを実行する必要がありますか?

# -- コーディング: utf-8 --
winrm をインポートする
ジョブ()を定義します:
  # 接続を取得します t = winrm.Session("xxx.xx.xx.xx", auth=("xx", "xxx"))
  # a.pdf の内容を取得します r = t.run_cmd(r'type C:\xxx\xxx\Desktop\test\a.pdf')
  # 内容を文字列に変換する s0 = str(r.std_out)
  # 印刷(s0)
  open("c.pdf","wb") を f として実行します:
        f.write(s0)
  print("書き込みが完了しました")
仕事()

要約する

上記は、私が皆さんに紹介した Linux から Windows システムをリモート制御するプログラム (3 つの方法) です。皆さんのお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Windows および Linux で Python3 プログラムをパッケージ化する詳細な方法
  • Mac、Linux、Windows で Golang をクロスコンパイルする方法
  • Windows と Linux で Python 3 をパッケージ化する方法
  • Linux または Windows 環境での pytorch のインストールと検証 (runtimeerror 問題の解決)
  • 圧縮を使用して Windows の zip 圧縮パッケージを Linux システムにアップロードする方法の分析
  • Linux サーバーと Windows システム間でファイルをアップロードおよびダウンロードする方法
  • Windows 環境下の Linux 仮想マシンで MySQL データベースにアクセスする方法の詳細な説明
  • Windows と Linux 間のリモート デスクトップ接続

<<:  更新とデータ整合性処理のためのMySQLトランザクション選択の説明

>>:  Vue で動的なスタイルを実現するためのさまざまな方法のまとめ

推薦する

MySQLの詳細な説明Explain

日常業務では、実行に時間のかかる SQL ステートメントを記録するために、スロー クエリを実行するこ...

WeChatアプレットはシンプルな計算機を実装する

WeChatアプレットの簡単な計算機は参考用です。具体的な内容は次のとおりです。 1. はじめに1....

OpenSSL は双方向認証のチュートリアルを実装します (サーバーとクライアントのコード付き)

1. 背景1.1 問題点最近の製品テスト レポートでは、PKI ベースの認証方法の使用が推奨されて...

WeChatアプレットbindtapとcatchtapの違いの詳細な説明

目次1. イベントとは何ですか? 2. イベントの使い方3. バインドタップとキャッチタップの違い4...

dockerプライベート倉庫の構築と利用の詳細説明

1. リポジトリイメージをダウンロードする docker プルレジストリ 2. プライベートウェアハ...

Dockerを使用してElasticsearchクラスターを素早くデプロイする方法

この記事では、 Dockerコンテナ ( docker-composeを使用してオーケストレーション...

Vue: メモリリークの詳細な説明

メモリリークとは何ですか?メモリ リークとは、新しいメモリが作成されたが、解放またはガベージ コレ...

フォーム要素の垂直方向の中央揃えに最適なソリューション

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

DockerコンテナのライフサイクルアーキテクチャとVMとの違いについて詳しく説明します。

コンテナのライフサイクルコンテナランタイムのライフサイクルコンテナは、分離特性を持つプロセスのセット...

画像拡大鏡効果のJSバージョン

この記事では、画像拡大鏡効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な内容...

MySQL 論理バックアップとリカバリ テストの概要

目次1. データベース論理バックアップとはどのようなバックアップですか? 2. よく使われる論理バッ...

JavaScript の parseInt() の魔法についての簡単な説明

原因このブログを書いた理由は、今日Leetcodeの日課問題をやっていたからです。文字列を整数(at...

Vue で動的に読み込まれたローカル画像を処理する方法

問題を見つける今日は、vue ファイルにローカル画像を導入する際に問題が発生したので、この記事を書き...

Linux での感嘆符コマンド (!) の使用の概要

序文最近、弊社では mbp の設定をしており、ssh を使うことが多くなりました。複雑なコマンドを書...

MySQLデータベースのQPSとTPSの意味と計算方法

DB ベンチマーク テストを実行する場合、qps と tps はデータベースのパフォーマンスを測定す...