CentOS7下萨姆ba的设置与布局,Powershell学习之道

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

Windows下的WMI程序

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

CentOS7下萨姆ba的装置与配置

一、Samba简介

Samba是在Linux和UNIX系统上贯彻SMB协议的贰个免费软件,由服务器及客户端程序构成。SMB(Server
Messages
Block,消息服务块)是壹种在局域网上共享文件和打字与印刷机的1种通信协议,它为局域网内的两样电脑之间提供文件及打印机等能源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议能够访问服务器上的共享文件系统、打字与印刷机及别的能源。通过设置“NetBIOS
over
TCP/IP”使得萨姆ba不但能与局域互连网主机分享能源,还可以与中外的微型总计机分享财富。

 
萨姆ba最大的机能正是足以用来Linux与windows系统直接的文件共享和打字与印刷共享,萨姆ba既能够用来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

亚洲必赢官网 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

CentOS7下萨姆ba的设置与布局,Powershell学习之道。下一场使用命令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下安装配备Samba的wiki:

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

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命令成功完成。

成立一个共享文件夹

疯狂的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路径对其进行访问。创立完文件共享之后,大家来看望怎么利用啊。

驱动器映射和共享访问

接下去,我们抛开图形化界面包车型客车操作(假设你非喜欢那么做的话,能够经过网上邻居【“网络”】举行查看,大概在微机图标下右键选用映射网络驱动器),大家来由此命令去启用吧。

强悍的Powershell

暂且创办1个互联网驱动器映射:

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

paramiko

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

开辟WMI服务界面

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

亚洲必赢官网 17

wmi启动.png

运维界面:

亚洲必赢官网 18

WMI.png

正文介绍如何行使Python访问WMI,并假定你已经下载并设置了pywin3二恢宏模块和WMI
Python模块。WMI是基于pywin3贰库的扩充库,并且揭露了有个别Python友好的界面,以适应有时凌乱的WMI脚本API。pywin32库运行看重于相应的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 = "口令")

万接二连3续远程主机要求提供密钥,上面第二行代码可改为:

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协议(SMB一和SMB2)的纯Python实现,它是有益在Windows机器之间展开文件共享和打字与印刷的平底协议,以及通过Samba服务器应用程序与Linux机器举办文件共享和打字与印刷。

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

回顾利用

创办2个拜访对象,并确立连接.

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: 具有写入措施的类公事对象。

一. 创办新目录。

conn.createDirectory(service_name,path)

亚洲必赢官网,二. 剔除空文件夹。

conn.deleteDirectory(service_name,path)

三. 去除文件。

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

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

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

伍. 获得远程主机的共享能源列表。

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