威尼斯人线上娱乐

CentOS柒下萨姆ba的安装与配置,Python操作远程机器

15 4月 , 2019  

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

Windows下的WMI程序

Windows Management
Instrumentation(WMI)是Windows驱动程序模型的壹组增加,提供了三个操作系统分界面,通过该分界面,检查实验组件能够提供消息和文告。WMI允许脚本语言(如VBScript)在地方和远程管理Microsoft
Windows个人Computer和服务器。WMI预安装在Windows Vista,Windows Server
200三,Windows XP,Windows Me和Windows 3000中。

CentOS7下Samba的安装与布署

一、Samba简介

Samba是在Linux和UNIX系统上贯彻SMB协议的2个无需付费软件,由服务器及客户端程序构成。SMB(Server
Messages
Block,音信服务块)是一种在局域网上共享文件和打字与印刷机的一种通讯协议,它为局域网内的不及计算机之间提供文件及打字与印刷机等财富的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议能够访问服务器上的共享文件系统、打字与印刷机及别的财富。通过安装“NetBIOS
over
TCP/IP”使得萨姆ba不但能与局域网络主机分享财富,仍是能够与全世界的微型计算机分享财富。

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

二、关闭SELinux和防火墙

CentOS柒下萨姆ba的安装与配置,Python操作远程机器。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

威尼斯人线上娱乐 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找不到再到本机查找

二测试语法

威尼斯人线上娱乐 2

三建立共享目录

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

五、测试

①在windows下输入\\192.168.10.128访问

威尼斯人线上娱乐 3

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

威尼斯人线上娱乐 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用户

威尼斯人线上娱乐 5

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

注:可使用命令smbpasswd -a +
用户名称叫该用户增多Samba密码,但用户必须是系统用户。

c、验证

windows客户端验证:

在”那台微机”右键,”映射网络驱动器”

威尼斯人线上娱乐 6

提醒输入用户名密码

威尼斯人线上娱乐 7

输入后

威尼斯人线上娱乐 8并会在那台计算机上出示

威尼斯人线上娱乐 9

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

“钦赐的互连网文件夹近年来是以其余用户名和密码举办映射的。要用其余用户名和密码进行连续,首先请断开全部现成的连年到互联网共享的照耀。”

化解:使用命令net use查看

威尼斯人线上娱乐 10

然后选用命令net use * /delete甘休全体连接,就可以连接。

威尼斯人线上娱乐 11

Linux客户端验证:

$smbclient-L192.168.10.128-Uzhi

威尼斯人线上娱乐 12

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

威尼斯人线上娱乐 13

难题:能下载无法上传

威尼斯人线上娱乐 14

解决:

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

威尼斯人线上娱乐 15

早已得以上传了

Linux实行挂载

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

威尼斯人线上娱乐 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下安装配备萨姆ba的wiki:

1、Samba简介Samba是在Linux和UNIX系统上贯彻SMB协议的3个无需付费软件,由服务器及客户端程序构成。SMB(Server
Messa…

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

导读在Linux环境下,大家很自由就能弹无虚发地经过命令操作一切事物,在Windows下,Powershell也好不轻松后来者居上,提供大批量的cmdlet以及c#的横向拓展。下边将由笔者辅导我们通过Powershell达成文件夹共享,当然文中也不会冷落cmd那枚大将。

文本夹共享概述

共享文件夹的施用1二分普遍,客户端对服务器端进行文件管理,局域网文件直传等等,在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命令成功完成。

开创2个共享文件夹

疯狂的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!!"}

如若只要您有长途机器的总指挥权限的话,也利用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路线对其实行访问。创制完文件共享之后,大家来看望怎么选用啊。

驱动器映射和共享访问

接下去,大家抛开图形化分界面包车型大巴操作(假如你非喜欢那么做的话,能够经过网上邻居【“网络”】举办查看,只怕在微型ComputerLogo下右键选拔映射网络驱动器),大家来通过命令去启用吧。

强悍的Powershell

方今创办三个网络驱动器映射:

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

成立1个持久化的网络驱动器映射:

# 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

做到如上的干活以往,不出意外,你的能源管理器会油然则生你想要访问的互连网路线的Logo。

删去共享

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

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也算…

paramiko

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

开荒WMI服务分界面

在开头-运转,输入services.msc,进入劳动

威尼斯人线上娱乐 17

wmi启动.png

起步分界面:

威尼斯人线上娱乐 18

威尼斯人线上娱乐 ,WMI.png

正文介绍怎么样利用Python访问WMI,并假定你曾经下载并设置了pywin3二扩充模块和WMI
Python模块。WMI是根据pywin3②库的恢宏库,并且暴光了一些Python友好的分界面,以适应有时凌乱的WMI脚本API。pywin3二库运维注重于相应的MSVC环境,同时,python版本供给与MSVC1致。

安装

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和SMB二)的纯Python完成,它是方便人民群众在Windows机器之间实行文件共享和打字与印刷的底层协议,以及经过萨姆ba服务器应用程序与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)

二. 删减空文件夹。

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)

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

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地图