winexe를 사용하여 Windows 시스템에서 "wmic" 명령 실행

winexe를 사용하여 Windows 시스템에서 "wmic" 명령 실행

winexe를 사용하여 Linux의 Windows 시스템에서 명령을 실행합니다. 예를 들어:

winexe -A authfile //syspc4.domain.com "ipconfig /all"

위의 내용은 Windows 시스템에서 cmd.exe를 실행하고 "ipconfig /all"을 입력하는 것과 동일한 내용을 인쇄할 것으로 예상됩니다.

나의 궁극적인 목표는 Windows 시스템의 일련 번호와 모델 이름을 원격으로(Linux에서) 얻는 것입니다. 이는 Windows(Windows XP) 시스템의 로컬 cmd.exe에서 다음 두 명령을 사용하여 쉽게 수행할 수 있습니다.

wmic bios get serialnumber
wmic computersystem get model

그러나 winexe를 통해 이 명령을 실행하려는 시도는 작동하지 않습니다. Enter 키를 누른 후에는 아무 일도 일어나지 않습니다. 오류도 없고 아무것도 없습니다. ctrl+c를 눌러 종료할 때까지 정지된 것처럼 보입니다.

내가 시도한 명령은 다음과 같습니다.

winexe -A authfile //syspc4.domain.com "wmic bios get serialnumber"
winexe -A authfile //syspc4.domain.com "cmd wmic bios get serialnumber"
winexe -A authfile //syspc4.domain.com "cmd /c wmic bios get serialnumber"
winexe -A authfile //syspc4.domain.com "cmd"
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>wmic bios get serialnumber

모든 경우에 응답이 없습니다. winexe --help를 잠깐 살펴보면 로깅 옵션이 표시되지만 해당 옵션을 설정해도 어떤 종류의 출력 로그도 없습니다.

누군가가 꽤 많은 질문을 했던 다른 포럼에서 다음 스레드를 찾았습니다.정밀한나처럼 그도 당연히 대답을 얻지 못했습니다. http://www.linuxquestions.org/questions/linux-software-2/winexe-780343/

편집하다: 디버깅이 켜져 있으면 여기에서 중단됩니다.

winexe -d 6 -A authfile //syspc4.domain.com "wmic bios get serialnumber"

...
IN: async_open(\pipe\ahexec, 2)
IN: async_open_recv
CTRL: Sending command: get version
CTRL: Sending command: run wmic bios get serialnumber
CTRL: Recieved command: std_io_err 15C40030
IN: async_open(\pipe\ahexec_stdin15C40030, 2)
IN: async_open(\pipe\ahexec_stdout15C40030, 2)
IN: async_open(\pipe\ahexec_stderr15C40030, 2)
IN: async_open_recv
IN: async_open_recv
IN: async_open_recv

**hangs forever here**

Then ctrl+c:

^CAborting...
ERROR: smb_raw_read_recv - NT_STATUS_PIPE_DISCONNECTED
ERROR: smb_raw_read_recv - NT_STATUS_PIPE_DISCONNECTED
ERROR: smb_raw_read_recv - NT_STATUS_PIPE_DISCONNECTED
ERROR: smb_raw_read_recv - NT_STATUS_PIPE_DISCONNECTED
ERROR: on_ctrl_pipe_error - NT_STATUS_PIPE_DISCONNECTED

그런데 이상한 점은 명령이 실패하지 않더라도(예: ipconfig /all) 정확히 동일한 결과가 나온다는 것입니다.

...
IN: async_open(\pipe\ahexec, 2)
IN: async_open_recv
CTRL: Sending command: get version
CTRL: Sending command: run ipconfig /all
CTRL: Recieved command: std_io_err 15C40031
IN: async_open(\pipe\ahexec_stdin15C40031, 2)
IN: async_open(\pipe\ahexec_stdout15C40031, 2)
IN: async_open(\pipe\ahexec_stderr15C40031, 2)
IN: async_open_recv
IN: async_open_recv
IN: async_open_recv

Windows IP Configuration
...
ERROR: smb_raw_read_recv - NT_STATUS_PIPE_DISCONNECTED
ERROR: smb_raw_read_recv - NT_STATUS_PIPE_DISCONNECTED
ERROR: smb_raw_read_recv - NT_STATUS_PIPE_DISCONNECTED
ERROR: smb_raw_read_recv - NT_STATUS_PIPE_DISCONNECTED
ERROR: on_ctrl_pipe_error - NT_STATUS_PIPE_DISCONNECTED

답변1

WMI 클라이언트는 여기서 사용됩니다.http://www.orvant.com/packages/Linux에서 직접 WMIC 명령을 실행할 수 있습니다. 단, 이 버전은 비WQL 쿼리를 지원하지 않으므로 WQL 명령과 동등한 명령을 사용해야 합니다.

답변2

최신 winexe 코드(2013년 11월 날짜의 "현재" git 저장소, 일명 "winexe-waf")를 테스트할 때 멈추지 않습니다. 저는 Unstable의 Samba 4.0.10 패키지를 사용하여 Debian Wheezy에 winexe를 구축하고 이를 실행했습니다. winexe -U "<user>%<pwd>" //192.168.1.2 'wmic bios get serialnumber'여기서 192.168.1.2는 Windows 7 Professional SP1을 실행하는 VirtualBox 가상 머신의 IP 주소입니다. 출력은 다음과 같습니다.

$ winexe -U "<user>%<pwd>" //192.168.1.2 'wmic bios get serialnumber'
SerialNumber
0

$ winexe -U "<user>%<pwd>" //192.168.1.2 'wmic computersystem get model'
Model
VirtualBox

답변3

winexe디버깅을 켠 상태에서 이 명령을 시도해 보겠습니다. 디버그 수준을 높일 수 있습니다(0, 1, 2, 3 등).

여기서는 명령을 있는 그대로 실행하고 스위치만 추가합니다 -d 3.

$ winexe -A authfile -d 3 //syspc4.domain.com "wmic bios get serialnumber"

ERROR: Unable to open credentials file!
[param/loadparm.c:587:init_globals()] Initialising global parameters
[param/loadparm.c:2462:lp_load()] lp_load: refreshing parameters from /dev/null
[param/params.c:556:pm_process()] params.c:pm_process() - Processing configuration file "/dev/null"
[param/loadparm.c:1343:lp_add_hidden()] adding hidden service IPC$
[param/loadparm.c:1343:lp_add_hidden()] adding hidden service ADMIN$
[auth/credentials/credentials_krb5.c:171:cli_credentials_set_ccache()] failed to get principal from default ccache: No such file or directory: open(/tmp/krb5cc_500): No such file or directory
[winexe/winexe.c:304:main()] winexe version 0.80
This program may be freely redistributed under the terms of the GNU GPL
[auth/auth.c:447:auth_register()] AUTH backend 'winbind_samba3' registered
[auth/auth.c:447:auth_register()] AUTH backend 'winbind' registered
[auth/auth.c:447:auth_register()] AUTH backend 'name_to_ntstatus' registered
[auth/auth.c:447:auth_register()] AUTH backend 'fixed_challenge' registered
[auth/auth.c:447:auth_register()] AUTH backend 'unix' registered
[auth/auth.c:447:auth_register()] AUTH backend 'anonymous' registered
[auth/auth.c:447:auth_register()] AUTH backend 'sam' registered
[auth/auth.c:447:auth_register()] AUTH backend 'sam_ignoredomain' registered
[auth/gensec/gensec.c:1229:gensec_register()] GENSEC backend 'krb5' registered
[auth/gensec/gensec.c:1205:gensec_register()] gensec subsystem fake_gssapi_krb5 is disabled
[auth/gensec/gensec.c:1229:gensec_register()] GENSEC backend 'schannel' registered
[auth/gensec/gensec.c:1229:gensec_register()] GENSEC backend 'spnego' registered
[auth/gensec/gensec.c:1205:gensec_register()] gensec subsystem gssapi_spnego is disabled
[auth/gensec/gensec.c:1229:gensec_register()] GENSEC backend 'gssapi_krb5' registered
[auth/gensec/gensec.c:1229:gensec_register()] GENSEC backend 'gssapi_krb5_sasl' registered
[auth/gensec/gensec.c:1229:gensec_register()] GENSEC backend 'ntlmssp' registered
[lib/util/util.c:334:interpret_addr()] sys_gethostbyname: Unknown host. syspc4.domain.com
[lib/socket/interface.c:103:add_interface()] added interface ip=192.168.1.110 nmask=255.255.255.0
[winexe/winexe.c:322:main()] ERROR: Failed to open connection - NT_STATUS_NO_MEMORY

관련 정보