【4858.com】Python操作远程机器,CentOS7下山姆ba的设置与安顿

By admin in 4858.com on 2019年3月31日

操作远程机器重要运用的有paramiko,WMI(Windows Management
Instrumentation),SMBConnection.

Powershell学习之道-文件夹共享及磁盘映射

导读在Linux环境下,我们很随便就能百步穿杨地因此命令操作一切事物,在Windows下,Powershell也终于后来的超过先前的,提供大量的cmdlet以及c#的横向拓展。上边将由小编引导我们经过Powershell完结公文夹共享,当然文中也不会冷落cmd那枚新秀。

文件夹共享概述

共享文件夹的运用非凡普遍,客户端对劳务器端进行文件管理,局域网文件直传等等,在linux下,能够省略的装置smaba协议,简单的配备之后即可使用。在windows下,可以经过图形化的操作开启那项效能,当然带着一点极客风格,大家由此powershell(少量产出cmd)来对其进行保管。

操作步骤翻看共享列表**

在powershell内,大家能够透过履行以下cmdlet获取共享消息:

λ Get-WmiObject -Class Win32_ShareName                                      Path                                      Description----                                      ----                                      -----------ADMIN$                                    C:\Windows                                远程管理C$                                        C:\                                       默认共享D$                                        D:\                                       默认共享E$                                        E:\                                       默认共享IPC$                                                                                远程 IPCUsers                                     C:\Users

同理,在cmd下,也可以

λ net share共享名       资源                            注解-------------------------------------------------------------------------------C$           C:\                             默认共享D$           D:\                             默认共享E$           E:\                             默认共享IPC$                                         远程 IPCADMIN$       C:\Windows                      远程管理Users        C:\Users命令成功完成。

始建1个共享文件夹

疯狂的Powershell

# 共享名$ShareName = 'TestShare'# 共享路径$Path = 'D:\SHARE'If (!(Get-WmiObject -Class Win32_Share -Filter "name='$ShareName'")) { $Shares = [WMICLASS]"WIN32_Share" $Shares.Create($Path,$ShareName,0).ReturnValue}else{Write-Warning "$ShareName has been sharing!!"}

【4858.com】Python操作远程机器,CentOS7下山姆ba的设置与安顿。假定假定你有长途机器的指挥者权限的话,也采取WMI在长途的机械上成立新的共享文件夹,上面是在中远距离主机上成立共享文件夹的代码:

# 共享名$ShareName = 'TestShare'# 共享路径$Path = 'D:\SHARE'# 远程主机名$Server = 'Server'If (!(Get-WmiObject -Class Win32_Share -Filter "name='$ShareName'")) { $Shares = [WMICLASS]"\\$Server\root\cimv2:WIN32_Share" $Shares.Create($Path,$ShareName,0).ReturnValue}else{Write-Warning "$ShareName has been sharing!!"}

低调的cmd

::建议先查看当前的共享文件夹再进行创建操作net share TestShare=D:\SHARE /users:25 /remark:"test share of the a folder"

咱俩很轻易地就能将一个文件夹的共享状态开启,我们能够通过UNC路径对其进展走访。创造完文件共享之后,大家来探视怎么使用呢。

驱动器映射和共享访问

接下去,大家抛开图形化界面包车型客车操作(如若您非喜欢那么做的话,能够经过网上邻居【“互联网”】进行查看,或许在微型总计机图标下右键选拔映射互联网驱动器),大家来通过命令去启用吧。

强悍的Powershell

暂时创办四个网络驱动器映射:

(New-Object -ComObject WScript.Network).MapNetworkDrive("Z:", "\\TEST-PC\USERS")

始建三个持久化的网络驱动器映射:

# New-PSDrive 加上 -Persist 参数使得驱动器在 PowerShell 之外可见。# 要真正地创建一个永久的网络驱动器,请确保加上 -Scope Global。/# 如果 New-PSDrive 在全局作用域范围之外运行(例如,在一个脚本中运行),该驱动器只会在脚本运行时出现在文件管理器中。New-PSDrive -Name Z -PSProvider FileSystem -Root \\TEST-PC\USERS -Persist -Scope Global

小巧的cmd

::下面这条命令虽然可以在cmd使用此磁盘映射,但是不可利用资源管理器加载。net use Z: \\TEST-PC\USERS::这里是将systemroot文件夹映射为z:驱动器,可利用"explorer.exe"加载,可惜不能使用网络路径。subst Z: $env:systemroot

成功如上的工作将来,不出意外,你的能源管理器会产出你想要访问的互连网路径的图标。

除去共享

要是不要求再使用此共享文件夹了,可以卸载掉网络驱动器,并在共享的主机上剔除该共享。

Powershell

$Shares = Get-WMIObject Win32_Share | Where {$_.Name -eq ""}Foreach ($Share in $Shares) {   $Share.Delete()}

cmd

net share TestShare /delete

小结

  1. 树立共享文件夹须求事先在启用网络共享和意识。
  2. 亟待超前做好文件夹权限决定以及共享的权能决定。
  3. 通过配备cmdkey可防止去身份认证

cmdkey /add:targetname /user:username /pass:password

Powershell管理共享的连锁链接:…

本文转发地址:

导读
在Linux环境下,我们很随意就能百发百中地通过命令操作一切事物,在Windows下,Powershell也算…

CentOS7下萨姆ba的装置与计划

一、Samba简介

4858.com ,萨姆ba是在Linux和UNIX系统上贯彻SMB协议的二个免费软件,由服务器及客户端程序构成。SMB(Server
Messages
Block,音信服务块)是一种在局域网上共享文件和打字与印刷机的一种通讯协议,它为局域网内的不等电脑之间提供文件及打字与印刷机等能源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议能够访问服务器上的共享文件系统、打字与印刷机及其余能源。通过设置“NetBIOS
over
TCP/IP”使得Samba不但能与局域互联网主机分享财富,还是可以与全世界的微处理器分享财富。

 
Samba最大的意义正是足以用来Linux与windows系统直接的文件共享和打字与印刷共享,Samba既能够用来windows与Linux之间的文件共享,也能够用来Linux与Linux之间的财富共享。

② 、关闭SELinux和防火墙

a、目前关门(不用重启机器):

#setenforce0##设置SELinux成为permissive模式(关闭SELinux)``#setenforce1##设置SELinux成为enforcing模式(开启SELinux)

b、修改配置文件必要重启机器:

#vi/etc/selinux/config

将SELINUX=enforcing 改为SELINUX=disabled(需重启机器)

c、可本人做策略开放相应端口,那里本身直接关闭:

#systemctlstatusfirewalld.service##查看防火墙状态``#systemctlstopfirewalld.service##关闭防火墙

三、安装Samba服务

①直接yum安装

#yuminstallsambasamba-client

②初始并查阅Samba

#systemctlstartsmbnmb##注:NMB对客户端提供NetBIOS服务``#systemctlstatussmbnmb

4858.com 1

四、配置Samba服务

①配置

#vi/etc/samba/smb.conf``===================GlobalSettings[全局选项]==============================``[global]``#``workgroup=WORKGROUP``##设定SambaServer所要加入的工作组或域``serverstring=SambaServerVersion%``v``##设定注释,宏%v表示显示Samba的版本号``netbiosname=zhi``##设置SambaServer的NetBIOS名称``maptoguest=baduser``##开启匿名访问````#-----------------LoggingOptions[日志选项]-----------------------------``log``file``=``/var/log/samba/log``.%m``##设置日志文件存储位置及名称,宏%m(主机名),表示对每台访问SambaServer的机器都单独记录一个日志文件``maxlogsize=50``##设置SambaServer日志文件的最大容量,单位为KB,0代表不限制``#----------------StandaloneServerOptions[独立运行进程]---------------------``security=share``##共享级别:共享目录只能被授权的用户访问``passdbbackend=tdbsam``##建立安全账户管理数据库``#-----------------PrintingOptions[打印选项]-----------------------------``#loadprinters=yes##设置是否在启动Samba时共享打印机``#cupsoptions=raw##通用unix打印选项``#==================ShareDefinitions[共享参数]==============================````[homes]``##设置用户宿主目录````comment=HomeDirectories``##描述该共享:家目录````browseable=no``##指定该共享是否可以浏览````writable=``yes``##指定该共享路径是否可写``[printers]``##设置打印机宿主目录````comment=AllPrinters``##描述:所有打印机````path=``/var/spool/samba````browseable=no````guestok=no``##指定该共享是否允许guest账户访问````writable=no````printable=``yes``##指定是否可打印``[public]````comment=PublicStuff``##定义说明信息````path=``/home/samba``##共享目录路径````public=``yes``##指定该共享是否允许guest账户访问````writable=``yes````printable=no````writelist=+staff``##允许写入该共享的用户

注:

+=====》只在本机的密码文件组中查找``&=====》只在nis服务中查找``@=====》先通过NIS服务器查找,nis找不到再到本机查找

②测试语法

4858.com 2

③成立共享目录

#mkdir/home/samba``#cd/home/samba/``#touchsamba.txt

五、测试

①在windows下输入\\192.168.10.128访问

4858.com 3

②在Linux下输入smbclient //192.168.10.128/public访问

4858.com 4

③布局只同意个别用户访问

a、配置smb.conf,添加如下

[``time``]````comment=AshesOfTime````path=``/share/time````valid``users``=zhi````writelist=zhi````printable=no````createmask=0755````directorymask=0755

b、建立共享目录、添加相应用户和组

#mkdir-p/share/time``#groupaddadmin``#useraddzhi-s/sbin/nologin``#cd/share/time``#echo"12345">abc.txt``#pdbedit-a-uzhi##新建Samba用户

4858.com 5

#pdbedit-L##查看Samba用户列表``#systemctlrestartsmbnmb##重启Samba

注:可使用命令smbpasswd -a +
用户名为该用户添加萨姆ba密码,但用户必须是系统用户。

c、验证

windows客户端验证:

在”那台电脑”右键,”映射互联网驱动器”

4858.com 6

提示输入用户名密码

4858.com 7

输入后

4858.com 8并会在那台微型总结机上海展览中心示

4858.com 9

荒唐:输入用户名、密码后弹出如下内容:

“钦点的互连网文件夹如今是以其余用户名和密码实行映射的。要用其余用户名和密码进行连接,首先请断开全体现有的连天到网络共享的映照。”

杀鸡取蛋:使用命令net use查看

4858.com 10

接下来利用命令net use * /delete甘休所有连接,即可连接。

4858.com 11

Linux客户端验证:

$smbclient-L192.168.10.128-Uzhi

4858.com 12

$smbclient``//192``.168.10.128``/time``-Uzhi

4858.com 13

题材:能下载无法上传

4858.com 14

解决:

#setfacl-mu:zhi:rwx/share/time/##赋予用户写权限

4858.com 15

曾经足以上传了

Linux实行挂载

$``sudo``apt-get``install``cifs-utils``##网络文件共享系统套件``$``sudo``mkdir``/mnt/samba``$``sudo``mount``-tcifs``//192``.168.10.128``/time``/mnt/samba``-ousername=zhi

4858.com 16

Linux达成机关挂载

$``sudo``vi``/etc/fstab``##添加如下``//192``.168.10.128``/time``/mnt/samba``cifscredentials=``/etc/samba/zhi``.``passwd``00``$``sudo``vi``/etc/samba/zhi``.``passwd``##防止密码泄露,所以另建文件``username=zhi``password=abcdef``$``sudo``chmod``og=---``/etc/samba/zhi``.``passwd``##设置该密码文件权限``$``sudo``umount``/mnt/samba``##卸载``$``sudo``mount``-a``##挂载fstab下的所有选项``$``ls``/mnt/samba/

附:Ubuntu下安装配备Samba的wiki:

① 、萨姆ba简介
Samba是在Linux和UNIX系统上落到实处SMB协议的三个免费软件,由服务器及客户端程序构成。SMB(Server
Messa…

Windows下的WMI程序

Windows Management
Instrumentation(WMI)是Windows驱动程序模型的一组扩充,提供了2个操作系统界面,通过该界面,检查和测试组件能够提供新闻和通报。WMI允许脚本语言(如VBScript)在地面和远程管理Microsoft
Windows个人计算机和服务器。WMI预安装在Windows Vista,Windows Server
2001,Windows XP,Windows Me和Windows 3000中。

paramiko

paramiko使用SSH2协议操作远程机器,是Python语言写的二个模块。

开拓WMI服务界面

在开班-运维,输入services.msc,进入劳动

4858.com 17

wmi启动.png

起步界面:

4858.com 18

WMI.png

正文介绍如何使用Python访问WMI,并假定你已经下载并设置了pywin32扩充模块和WMI
Python模块。WMI是依据pywin32库的扩充库,并且暴光了一部分Python友好的界面,以适应有时凌乱的WMI脚本API。pywin32库运营正视于相应的MSVC环境,同时,python版本必要与MSVC一致。

安装

pip  install paramiko

连接

连天本地主机:

import wmi
c = wmi.WMI()

倘假诺连连别的主机,要求添加该主机名参数:

import wmi
c = wmi.WMI("other_machine")

使用

选择首要回顾执行命令,上传文件和下载文件。

查询

wmi模块最常见的用途正是对系统的音信举办查询:

import wmi
c = wmi.WMI()
for os in c.Win32_OperatingSystem():
  print os.Caption
'''
输出:
Microsoft Windows 7 旗舰版 
'''

询问磁盘详细音信:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import wmi

def toGB(size):
    return str(long(size)/1024**3) + "GB"

def disk():
    c = wmi.WMI ()
    #获取硬盘分区
    for physical_disk in c.Win32_DiskDrive ():
        for partition in physical_disk.associators ("Win32_DiskDriveToDiskPartition"):
            for logical_disk in partition.associators ("Win32_LogicalDiskToPartition"):
                print physical_disk.Caption, partition.Caption, logical_disk.Caption

disks = wmi.WMI ().Win32_LogicalDisk ()

disk()

for d in disks:
    print d.Caption,\
        "TotalSize:",toGB(d.Size),\
        "FreeSize:",toGB(d.FreeSpace),\
        "FreeRate:%0.2f%%"%(100.0 * long (d.FreeSpace) / long (d.Size))

连接

有三种格局连接到linux服务器。
方式一:

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("某IP地址",22,"用户名", "口令")

方式二:

t = paramiko.Transport(("主机","端口"))
t.connect(username = "用户名", password = "口令")

若是总是远程主机须求提供密钥,上边第③行代码可改为:

t.connect(username = "用户名", password = "口令", hostkey="密钥")

执行命令

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("某IP地址",22,"用户名", "口令")
stdin, stdout, stderr = ssh.exec_command("你的命令")
print stdout.readlines()
ssh.close()

上传文件

import paramiko

t = paramiko.Transport(("主机","端口"))
t.connect(username = "用户名", password = "口令")
sftp = paramiko.SFTPClient.from_transport(t)
remotepath=’/var/log/system.log’
localpath=’/tmp/system.log’
sftp.put(localpath,remotepath)
t.close()

下载文件

import paramiko

t = paramiko.Transport(("主机","端口"))
t.connect(username = "用户名", password = "口令")
sftp = paramiko.SFTPClient.from_transport(t)
remotepath=’/var/log/system.log’
localpath=’/tmp/system.log’
sftp.get(remotepath, localpath)
t.close()

参照链接

WMI

WMI(Windows Management
Instrumentation)用于管理windows机器。以下实例功用是实践长途机器的bat文件。

import wmi

# 远程执行bat文件
def call_remote_bat(ipaddress, username, password):
    try:
        pythoncom.CoInitialize()
        # 用wmi连接到远程服务器
        c = wmi.WMI(computer=ipaddress, user=username, password=password)
        filename = r"C:\auto_login.bat"  # 此文件在远程服务器上
        # filename = r"C:\agent\dist\machine.exe"  # 此文件在远程服务器上
        cmd_callbat = r"cmd /c call %s" % filename
        c.Win32_Process.Create(CommandLine=cmd_callbat)  # 执行bat文件   Win32_Process.Create
        time.sleep(1)
    except:
        print('{}远程执行失败'.format(ipaddress))

参考链接:wmi教程,wmi实例

pysmb

pysmb是客户端SMB
/CIFS协议(SMB1和SMB2)的纯Python达成,它是便利在Windows机器之间实行理文件件共享和打印的平底协议,以及经过Samba服务器应用程序与Linux机器举办文件共享和打字与印刷。

  • 利用pip安装即可:pip install pysmb
  • 需安装Twisted依赖包: pip install Twisted

简易利用

成立叁个走访对象,并树立连接.

from smb.SMBConnection import *

# username: 远程主机用户名  password: 远程主机密码
# my_name: 本机主机计算机名 remote_name: 远程主机计算机名
# ip: 远程主机ip
conn = SMBConnection(username, password, my_name, remote_name)
conn = conn.connect(ip)

常用方法。

  • servuce_name: 共享文件夹的名称
  • path:
    新文件夹(相对于)共享文件夹的路线。如若路径包涵非英文字符,则必须选用unicode字符串来传递路径。
  • timeout: pysmb将等待的秒数。
  • file_obj: 具有写入措施的类公事对象。

1. 开立新目录。

conn.createDirectory(service_name,path)

2. 删减空文件夹。

conn.deleteDirectory(service_name,path)

3. 剔除文件。

conn.deleteFiles(service_name,path_file_pattern,timeout=30)

4. 重命名文件或文件夹。

# old_path: 旧文件名  new_path: 新文件名
conn.rename(service_name,old_path,new_path)

5. 获取远程主机的共享财富列表。

file_list = conn.listShares(timeout = 30)
# 遍历获取共享文件名
for file in file.list:
    print(file.name)

6. 上传文件到长途主机。

conn.storeFile(service_name,path,file_obj, timeout=30)

实例

from smb.SMBConnection import *

def send_file(username, password, my_name, remote_name, ip, file_dir, file_dir_remote):
    """
    pysmb下发脚本
    :param username: 远程主机用户名
    :param password: 远程主机密码
    :param my_name: 本地计算机名
    :param remote_name: 远程计算机名
    :param ip: 远程ip
    :param file_dir: 要传输的文件夹本地地址
    :param file_dri_remote: 上传位置相对于c盘的路径
    :return: 
    """
    try:
        # 创建pysmb访问对象
        conn = SMBConnection(username, password, my_name, remote_name)
        # 创建pysmb连接
        conn.connect(ip)
        # 提取文件名或目录正则
        pattern = re.compile(r'.*/(.*)')
        # 读取文件对象
        file_obj = open(file_dir, 'rb')
        # 远程文件名
        file_name = file_dir_remote + pattern.search(file_dir).group(1)
        # 传输文件到远程主机
        conn.storeFile('C$', file_name, file_obj)
        file_obj.close()
    except:
        print('{}远程传输文件失败'.format(ip))
    time.sleep(1)
    call_remote_bat(ip, username, password)
    try:
        conn.deleteFiles('C$', file_name)
    except:
        print('{}远程删除文件失败'.format(ip))
    conn.close()

参照链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有