windows與windows遠程連接,windows和linux遠程連接,linux和windows遠程連接


 

目錄

1 預研目的 1

1.1  背景 1

1.2  研究范圍 1

1.3  研究意義 1

2 研究成果 2

2.1  已達成目標或原型 2

2.2  成本與風險 2

3 過程 2

3.1  關鍵技術描述 3

3.2  技術開發指導 3

1. 代碼展示(linux連接展示) 3

2. Linux文檔傳輸代碼 4

3. Windows連接代碼 4

4. Windows傳輸代碼 5

5. Winrm服務端的配置說明 6

6. Window遠程文件傳輸界面展示 8

7. Linux遠程文件傳輸界面展示 9

3.3  過程問題 9

4  參考資料 10

 

 

預研目的

主要任務是實現軟件的遠程自動安裝,以及遠程自動安裝的實現。用到的技術主要是python相關庫的調用,windows中相關環境的配置,服務器的配置等內容。

1.1  背景

目前,大多數一定規模的企業銷售體系普遍存在着由公司總部、營銷中心、倉庫(配送中心)以及異地分支機構等多個部門的協同運作構成,而且這些部門通常不在一個區域,這種情況給企業實施基於整個公司的業務信息管理系統帶來挑戰,主要表現在:從管理的角度來說,企業要求不論使用管理軟件的部門在什么地方,但其日常業務引起的數據信息變換應該及時反映在公司的數據庫中。

國內外有關軟件的遠程自動安裝機制,相關的資料還是比較少,但是機器的遠程技術已經相當的成熟,想在眾所周知的遠程安裝軟件非常的多,比如機器自帶的遠程桌面連接、TelnetSSHQQ通信軟件上面帶的遠程連接,還有專門用於遠程安裝的軟件teamviwer、向日葵等。關於遠程軟件的自動安裝也有零零散散的技術,但是目前市場上面沒有一個整合的、明確的軟件。通過調研,了解到微軟的公司內部,有關於windows系統的遠程安裝的技術,但是他們的技術是不開源的。而微軟內部的這種技術也僅僅是為了方便自己的公司內部軟件的自我管理。本公司調研的這項技術也恰恰和微軟類似。和微軟不相同的是,我們所要面對的不僅僅局限於windows系統,還有linux系統。所以這項技術最終的目標也是實現windows系統和linux系統上的遠程軟件自動安裝技術。

1.2  研究范圍

這項技術主要用到了計算機網絡中的傳輸協議的研究。通過了解內部的底層原理,可以明確整個連接的過程以及如何進行文件傳輸的控制。自動安裝技術主要用到的是鏡像技術。通過把鏡像看成是一個大的文檔,然后通過遠程進行文檔的傳輸,當文檔傳輸完成的時候,也就是軟件安裝成功的時候。Linux系統中的連接的協議主要的是SSH協議,windows系統中主要用到的技術是RDP協議。這兩種協議都是分布在ISO協議的應用層中。整個傳輸的過程設計到iOS的七層模型,這項研究的重點是關注於應用層的協議。在python中可以通過調用相關的庫來抓包,通過抓包分析,可以看到傳輸中用到的是什么協議。對於windowslinux系統,我所做的任務都是分為了兩步,第一步是進行遠程連接,第二部是進行文件的無損傳輸。

1.3  研究意義

這項技術的研究意義是為了方便公司的內部管理人員進行公司中電腦資源的批量管理和系統的資源配置,這同時也節省了工作人員進行繁瑣的軟件安裝以及更新的操作過程。這向技術的特性是可以實現windowslinux系統上面的軟件的自動安裝。這項技術是項目組的一個子項目,其主要用於輔助管理人員進行資源的管理。行業標准是實現文件的安全傳輸的情況下,保障其完整性以及可用性。商業價值可以在任何公司進行公司的內部的資源的管理,以及文件的下發和信息的通知等內容,省去了工作人員無聊的下載安裝工作。

2   研究成果

目前的研究成果:實現了linux遠程連接以及文件的無損傳輸。Windows遠程連接和文件的無損傳輸。

2.1  已達成目標或原型

實現了遠程的windows系統的連接和linux系統的連接,以及windows遠程文件傳輸,和linux系統的遠程文件傳輸。

2.2  成本與風險

此技術需要用到計網相關的知識的學習,調研的時間為一周,開發的時間需要一周,進行細節的調研和實現需要一周,總共三周的工作。實現了遠程連接和文件的遠程傳輸。

這項技術不足之處分為兩點:第一個就是軟件的自動安裝,需要進行寫一個腳本進行控制自動從網上下載相關的內容,但是這個腳本相當於一個.exe可執行文件,但是這個還沒有實現,暫時是想到了將軟件映射成為鏡像然后進行遠程的傳輸工作。第二個難點就是進行文件的完整傳輸,這個在linux系統中文件的遠程實現了完整傳輸,但是windows中沒有相關內容的調研,所以只是實現了基本的文本傳輸,以及有限定的文件內容的傳輸。相關的內容還需要進行進一步的實現。在windows中如果想要進行文件的完整傳輸,可以先將文件轉換為二進制文件,然后再進行文件流的流入工作。還用就是軟件進行鏡像映射,然后需要將這個鏡像再映射成為二進制文件流進行讀入。

Linux遠程傳輸中進行完整鏡像的傳輸還沒有實現

Windows中進行完整文件的傳輸還需要進一步的實現,這個現階段實現了傳送文件,但是還不是完整性的傳輸,傳輸的過程中還需要考慮到編碼方面的知識點。

3  過程

整個的研發過程分為:調研階段、環境配置階段、原型輸出階段、開發階段、總結階段。在第三部分,主要講的是關於研發過程中,環境的配置以及開發階段。其次是總結階段。因為開發周期比較短,所以初步形成了開發的原型。

3.1  關鍵技術描述

用到的變成語言是python,開發環境是python2.7。用到的庫是winrmparamiko。這兩個里面含有封裝好的遠程連接。Linux的通信協議是基於SSH的,windows的連接協議是基於RDP的。在windows中的連接還需要用到windows中自帶的winrm服務端。需要服務端的配置。配置好服務端之后需要進行開啟服務端。

3.2  技術開發指導

這節主要是具體預研過程,開發過程,環境搭建,編碼,調試等過程。

首先需要進行調研,在連接的過程中需要用到什么技術。這方面在網上的資料比較的少,需要進行翻牆搜索,然后就是確定了所用到的技術之后,就需要進行調試工作了。首先是安裝python,這里安裝的python的版本也需要有一定的規則,有的太低或者太高的版本中對於庫的支持的情況也是不同的。Linux中用到的系統是centos2.7Windows 中用到的系統是win7win10這兩個系統。在進行win10的連接的過程中需要進行winrm的服務端的信息的配置。

  1. 代碼展示(linux中連接展示)

 

# -*- coding: utf-8 -*
# 測試過程中,比較常用的操作就是將DUT(待測物)接入網絡中,然后遠程操控對DUT,
# 使用SSH遠程登陸到主機,然后執行相應的command即可
# python 代碼如下:
# paramiko是用python語言寫的一個模塊,遵循SSH2協議,支持以加密和認證的方式,進行遠程服務器的連接
# 首先第一步我們需要安裝paramiko這個包
# 安裝命令:pip install paramiko
# 導入paramiko包
import paramiko
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 允許連接不在know_hosts文件中的主機
s.connect("10.65.5.94",22,"dell", "nsfocussyh")
execmd = 'ls' #需要輸入的命令
stdin, stdout, stderr = s.exec_command (execmd)
print(stdout.read())
s.close()
#結果
#b'/home/usra\n'

 

  

 

這部分的代碼在運行的時候需要步驟

1)先安裝好python(相關的環境變量的配置方面自己可以進行網上動手進行搜索,這方面的內容比比皆是)

2)然后再安裝好python中的pip(有的python中自帶pip,有的沒有,如果沒有的話需要進行自己安裝)

3)通過pip再安裝paramiko模塊,這個模塊主要是用來進行linux的連接用的。

4)至此就可以進行linux的連接了。

連接需要的准備信息工作

1)Linux系統所在ip地址

2)Linux系統的用戶名

3)Linux系統的用戶名密碼

所有的環境變量配置好了之后就可以進行上述的代碼的運行操作。上述代碼可以進行完整的運行,前提是需要自己將自己的環境都配置正確了,然后自己遠程的linux系統的ip輸入正確,以及用戶名和用戶密碼也要輸入正確,這樣才可以進行遠程的連接。由於使用的是python這樣的跨平台的運行語言,所以所有支持python平台的如LinuxSolarisBSDMacOSXWindows等,paramiko都可以支持,因此,如果需要使用SSH從一個平台連接到另外一個平台,進行一系列的操作時,paramiko是最佳的工具之一。當然paramiko只支持對linux系統的遠程,因為paramiko是用python語言寫的一個模塊,遵循SSH協議,支持加密和認證的方式和,進行遠程服務器的連接。通過連通之后,我們可以進行在自己的控制台可以進行輸入linux的相關的命令,然后對linux系統進行一系列的操作。合法的linux命令都是支持的,cdpwdmv xxxps -ef|grep tomcat等等均可執行。

  1. Linux文檔傳輸代碼
# -*- coding: utf-8 -*-
import paramiko
transport = paramiko.Transport(('10.65.150.53', 22))
transport.connect(username='root', password='nsf0cus123')
sftp = paramiko.SFTPClient.from_transport(transport)
# 將location.py 上傳至服務器 /tmp/test.py   '/tmp/test_from_win'
sftp.put('/Users/dell/PycharmProjects/restful/s.jpg', "/syh/desert.jpg")
# 將remove_path 下載到本地 local_path
# sftp.get('/Users/dell/PycharmProjects/restful/s2.jpg', '/desert.jpg')
transport.close()

  

 

這部分的代碼主要是用來遠程的文件傳輸所用,這里用到了paramiko中的Transport子模塊內容。然后用到了sftp協議。通過上述的代碼可以將運行本段代碼的系統中的文件進行遠程傳輸到自己輸入ip地址中的linux電腦中。

  1. Windows連接代碼
import winrm
import sys
host = "192.168.2.131"
username = "BlackSwan"
passwd = "wbrs"
#start the connection session
s = winrm.Session('http://' + host + ':5985/wsman' , auth=(username, passwd))
def _runCommand(comn):
    if(comn == 'q'):
        sys.exit()
    r = s.run_cmd(comn)
    print r.std_out
while 1:
    # comn = raw_input("echo jintianwohaokaixinya >>a.txxt")
    raw= raw_input("raw_input: ")
    print raw
    comn = "echo "+raw+ " >>a.txt"
    _runCommand( comn )

  

 

這部分的代碼主要是用於windows遠程連接的代碼,這個代碼對於win7win10都是適用的。這部分的代碼需要進行安裝pywinrm模塊。安裝好了之后連接需要的准備信息工作

1windows系統所在ip

2windows系統的用戶名

3windows系統的用戶名密碼

  1. Windows傳輸代碼
import winrm
import sys
import io
import argparse
# define the target host
host = "192.168.2.131"
username = "BlackSwan"
passwd = "wbrs"
# start the connection session

s = winrm.Session('http://' + host + ':5985/wsman', auth=(username, passwd))
# input the command to be run

def _runCommand(comn):
    if (comn == 'q'):
        sys.exit()
    s.run_cmd(comn)
if __name__ == '__main__':
    f_name = 'f_test.txt'
    old_str = 'wo'
    new_str = 'haha'
    f = io.open(f_name, "r", encoding='utf8')

      for line in f:
         line =f.read(10)
         # comn = "echo  " + line + ">>a.txt"+"\n"
         comn = "echo  " + line + ">>a.txt"+"\n"
         _runCommand(comn)
     f.close()
     # comn = raw_input("echo jintianwohaokaixinya >>a.txxt")

這部分的代碼是關於文件的傳輸,這里面用到的技術主要是先進行windows的遠程的連接,遠程的連接用到的也是winrm這個模塊,通過連接可以進行遠程連接的windows系統的cmd操作,在cmd中可以進行文件的操作,主要是關於文件的創建以及文件中數據的錄入工作。通過python中的io控制流可以進行文件的讀取操作。將文件中的數據讀出來然后通過echo通過遠程系統的cmd窗口進行創建文件,然后進行數據的錄入。

  1. Winrm服務端的配置說明

1) winrm service 默認都是未啟用的狀態,先查看狀態;如返回信息,則是沒有啟動;在需要遠程的windows系統中的dos命令窗口進行輸入如下命令

winrm enumerate winrm/config/listener

輸入之后,我的主機上面的dos窗口中顯示如圖5.1所示:(這里需要注意在運行dos命令窗口的時候需要提供管理員的權限,不然運行不了)

 

 

 

5.1

2) 針對winrm service 進行基礎配置:

執行命令

Winrm quickconfig

運行之后顯示如圖5.2

 

 

 

5.2

3) 查看winrm service listener

執行命令

winrm e winrm/config/listener

運行之后如圖5.3

 

 

 

5.3

4) winrm service配置auth

執行命令

winrm set winrm/config/service/auth @{Basic="true"}

運行之后如圖5.4

 

 

 

5.4

5) winrm service配置加密方式為允許非加密:

執行命令

winrm set winrm/config/service @{AllowUnencrypted="true"}

運行之后顯示如圖5.5

 

 

 

5.5

  1. windows遠程文件傳輸的界面圖如圖6.1

 

 

 

6.1

  1. Linux遠程連接的界面展示如圖7.1,Linux中遠程文件傳輸的界面展示如圖7.2

 

 

 

7.1

 

 

 

7.2

3.3  過程問題

遇到的問題:首先是明確需求,調研的時候要找到痛點。在開發的時候需要找准自己方向。在進行遠程連接的時候,首先找有沒有一個通用的工具,既可以實現windows、還可以實現linux連接,但是通過查找發現沒有相關的資料以及文獻。然后將linux遠程和windows遠程進行分開操作,然后發現分開操作是可行的。遠程連接實現之后,還要實現文件的完整傳輸。在linux中有集成好的文件可以供自己來操作,直接通過調用paramiko中的方法,就可以實現linux的遠程連接以及文件的完整傳輸。同時還有一個問題就是paramiko只支持SSH2協議。這個問題目前沒有解決。在windows中實現連接之后,可以實現文件的完整傳輸,這個在winrm中沒有相關的操作。所以只有通過操作遠程連接電腦中的dos窗口,然后進行完成相關的文件的創建以及文件的數據的讀取。這個在讀取的時候,需要了解自己的文件的結構,不然在讀取文件的時候,原來讀取的可能會被自己現有讀取的文件進行覆蓋掉。這個也是一個先存在的問題。

4  參考資料

下面的資料主要是關於搜索的主要的資料的一些連接,參考書目,建議閱讀

1)[轉]遠程桌面連接原理 - blacet的學習點滴 - CSDN博客

2)解析三種Windows操作系統遠程控制的實現(3)__科技時代_新浪網

3)局域網域控制器的域名與互聯網上的域名是什么關系? 有什么區別?_百度知道

4)利用pywinrm,遠程管理windows server-百度經驗

5)windows開啟winrm service, 以便進行遠程管理-百度經驗

6)修改windows下面的system下面的host文件

7)python遠程連接windows服務器並上傳數據 - qq_37768140的博客 - CSDN博客

8)MSDN, 我告訴你

9)powershell界面的配置過程

10)ssh在windows上遠程

11)VM安裝windows 10過程

12)win7的遠程的實現

13)windows上開啟winrm服務 - Arckal的博客 - CSDN博客

14)winrm實現windows遠程連接

15)wmi比較全的簡介

16)ssh(安全外殼協議)_百度百科

17)遠程桌面協議_百度百科

18)python實現遠程控制Linux - 小青~ - 博客園


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM