26

私はPythonが初めてで、リモートWindowsマシンに接続してそこでコマンドを実行し、ポート接続をテストするスクリプトを作成しようとしています.

ここに私が書いているコードがありますが、機能していません。基本的に、私はしたいのですが、リモートのマシンデータではなく、ローカルマシンのデータを返します。

import wmi
import os
import subprocess
import re
import socket, sys

def main():

     host="remotemachine"
     username="adminaam"
     password="passpass!"
     server =connects(host, username, password)
     s = socket.socket()
     s.settimeout(5)
     print server.run_remote('hostname')

class connects:

    def __init__(self, host, username, password, s = socket.socket()):
        self.host=host
        self.username=username
        self.password=password
        self.s=s

        try:
            self.connection= wmi.WMI(self.host, user=self.username, password=self.password)
            self.s.connect(('10.10.10.3', 25))
            print "Connection established"
        except:
            print "Could not connect to machine"


   def run_remote(self, cmd, async=False, minimized=True):
       call=subprocess.check_output(cmd, shell=True,stderr=subprocess.STDOUT )
       print call

main() 
4

11 に答える 11

5

接続用

c=wmi.WMI('machine name',user='username',password='password')

#this connects to remote system. c is wmi object

コマンド用

process_id, return_value = c.Win32_Process.Create(CommandLine="cmd.exe /c  <your command>")

#this will execute commands
于 2015-02-10T19:43:47.317 に答える
2

クライアント マシンには Python がロードされていますか? もしそうなら、私はpsexecでこれをやっています

私のローカル マシンでは、.py ファイルで subprocess を使用してコマンド ラインを呼び出します。

import subprocess
subprocess.call("psexec {server} -c {}") 

-c はファイルをサーバーにコピーして、任意の実行可能ファイルを実行できるようにします (この場合、接続テストでいっぱいの .bat または上記の .py ファイルである可能性があります)。

于 2014-03-09T16:33:09.060 に答える
2

私は個人的にpywinrm図書館が非常に効果的であることを発見しました。ただし、動作する前に、マシンでいくつかのコマンドを実行し、その他のセットアップを行う必要があります。

于 2016-01-06T23:51:57.943 に答える
0

手遅れですか?

私は個人的にBeatrice Lenに同意します.paramikoを使用したのはWindowsの追加のステップかもしれませんが、サンプルプロジェクトのgitハブがあります.クローンするか、私に尋ねてください.

https://github.com/davcastroruiz/django-ssh-monitor

于 2018-09-01T00:13:32.160 に答える