‘壹’ 如何使用python连接远程Windows服务器
在服务器的电脑上添加第二块网卡,用于连接Internet。用域管理员账户在远程访问服务器上登录。为第二块网卡添加公网IP地址
在远程访问服务器上,从“管理工具”中打开,“服务器管理器”窗口,选中“角色”,单击“添加角色”,打开“添加角色向导”窗口。
在弹出来的“开始之前”窗口中点击“是”按钮。
单击“下一步”“进入选择服务器角色””窗口,选择“网络策略和访问服务”单击“下一步”。
在“网络策略和访问服务”简介窗口单击“下一步”,在“选择角色服务”窗口选择“路由和远程访问服务”。
接下来会显示安装进度
等安装好了以后,点击关闭就可以了。
‘贰’ python 实现ssh的执行远端命令和scp的不同机器文件传输功能
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pexpect
def ssh_cmd(ip, passwd, cmd):
ret = -1
ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, cmd))
try:
i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5)
if i == 0 :
ssh.sendline(passwd)
elif i == 1:
ssh.sendline('yes\n')
ssh.expect('password: ')
ssh.sendline(passwd)
ssh.sendline(cmd)
r = ssh.read()
print r
ret = 0
except pexpect.EOF:
print "EOF"
ssh.close()
ret = -1
except pexpect.TIMEOUT:
print "TIMEOUT"
ssh.close()
ret = -2
return ret
利用pexpect模块我们可以做很多事情,由于他提供了自动交互功能,因此我们可以实现ftp,telnet,ssh,scp等的自动登录,还是比较实用的。根据上面的代码相信读者已经知道怎么实现了(python就是那么简单!)。
用
上面的代码去完成任务还是比较费时间的,因为程序要等待自动交互出现,另外ubuntu用ssh连接就是比较慢,要进行一系列的验证,这样才体现出ssh
的安全。我们要提高效率,在最短的时间内完成。后来我发现了python里面的paramiko模块,用这个实现ssh登录更加简单。看下面的代码:
复制代码 代码如下:
#-*- coding: utf-8 -*-
#!/usr/bin/python
import paramiko
import threading
def ssh2(ip,username,passwd,cmd):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,username,passwd,timeout=5)
for m in cmd:
stdin, stdout, stderr = ssh.exec_command(m)
# stdin.write("Y") #简单交互,输入 ‘Y'
out = stdout.readlines()
#屏幕输出
for o in out:
print o,
print '%s\tOK\n'%(ip)
ssh.close()
except :
print '%s\tError\n'%(ip)
if __name__=='__main__':
cmd = ['cal','echo hello!']#你要执行的命令列表
username = "" #用户名
passwd = "" #密码
threads = [] #多线程
print "Begin......"
for i in range(1,254):
ip = '192.168.1.'+str(i)
a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))
a.start()
上面的程序还是有些技巧的:
1.
利用多线程,同时发出登录请求,同时去连接电脑,这样速度快很多,我试了一下,如果不用多线程,直接一个一个挨着执行的话,大约5~10秒钟才能对一台电
脑操作完,具体时间要根据命令的来决定,如果是软件安装或者卸载时间要更长一些。这样下来怎么也要一二十分钟,用多线程后就快多了,所有的命令执行完用了
不到2分钟!
2.最好用root用户登录,因为安装或者卸载软件的时候如果用普通用户又会提示输入密码,这样又多了一次交互,处理起来就比较麻
烦!安装软件时apt-get install xxx
最好加上“-y”参数,因为有时安装或删除软件时提示是否继续安装或卸载,这又是一次自动交互!加上那个参数后就没有人机交互了。
3. 循环时循环所有ip,因为计算机的ip是路由器自动分配的,保险起见,最好全部都执行,保证没有遗漏的主机
4.远端执行命令时如果有交互,可以这样用 stdin.write("Y")来完成交互,“Y”就是输入“Y”。
5.把所有的命令放到一个列表里面,遍历列表可以依次执行列表里面的命令
6.为了更好的进行控制,最好在电脑上提前把root用户打开,装好ssh服务器并让其开机自动执行。
‘叁’ 我想用python写个web界面简单执行远程linux命令 web界面要能自由填写执行shell命令和脚本
首先python基础你得会:
最简单套路:web用flask,linux交互用subprocessor模块
说白了就三点:python基础、flask框架、subprocessor模块
‘肆’ 在windows上的python 连接 linux 并做点操作
访问SqlServer
复制代码代码如下:
>>> import pyodbc
>>>cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=192.168.1.100\\sql;DATABASE=testDB;UID=sa;PWD=myPassword')
>>>cursor = cnxn.cursor()
>>>cursor.execute("select * from Tb")
二、Linux下配置Python访问SqlServer
环境:CentOS 6.2 + Sqlserver 2008
1、安装freetds:
复制代码代码如下:
yum install freetds*
2、安装pyodbc:
复制代码代码如下:
yum install pyodbc
修改odbc配置:
复制代码代码如下:
vi /etc/odbcinst.ini
添加FreeTDS驱动:
复制代码代码如下:
[SQL Server]
Description = FreeTDS ODBC driver for MSSQL
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsS.so
FileUsage = 1
3、测试
复制代码代码如下:
#python
>>> import pyodbc
>>>cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=192.168.1.100\\sql;DATABASE=testDB;UID=sa;PWD=myPassword')
>>>cursor = cnxn.cursor()
>>>cursor.execute("select * from Tb")
‘伍’ pythonftp连接远程执行cmd
pythonftp连接远程执行cmd操作方法如下:
1、pipinstallpywinrm安装模块即可。
2、windows系统服务器需要开启winrm服务。
3、cmd命令可以写成一个.bat文件,在服务器上直接执行即可。
‘陆’ 请教下python3 上如何实现级联ssh
首先,我的windows系统上有python2和python3。使用下面命令切换到python3:
activate py3
1
接着使用下面命令下载相关模块:
pip install ecdsa
pip install Crypto
pip install paramiko
1
2
3
连接服务器操作:
# -*- coding: utf-8 -*-
import paramiko
# 服务器相关信息,下面输入你个人的用户名、密码、ip等信息
ip = ""
port = 22
user = ""
password = ""
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 建立连接
ssh.connect(ip,port,user,password,timeout = 10)
#输入linux命令
stdin,stdout,stderr = ssh.exec_command("pwd")
# 输出命令执行结果
result = stdout.read()
print(result)
#关闭连接
ssh.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
如下,运行该程序,可以看到控制台输出的结果:
‘柒’ python3 使用socket怎么连接远程服务器
方法如下:
1、按WIN+Q组合键打开搜索框,输入"远程桌面连接",点击下方提示的远程桌面连接
2、在打开的连接窗口,输入远程机器的计算机名或IP地址,和端口
3、系统可能会有一些提示,点击确认。
4、登入远程主机后,输入远程主机的用户名和密码即可
‘捌’ 如何远程登录Linux机器并运行Python程序
可以通过任意的ssh工具,通过秘钥或者密码的方式连接到远程Linux机器上通过python命令运行程序,demo如下:
sshuser@ip"pythonfile.py"
注:file程序如需要后台运行,请自行设置守护进程。
‘玖’ python使用paramiko模块ssh远程linux服务器,linux服务器已经使用公钥认证免密码登陆,请问怎么写
1.可密码搭游、公私钥认证,实现sftp文件上传下载
2.脚本知笑销
a.显示命令行帮助:pythonsftp_downloader.py-h
b.运行:pythonsftp_downloader.py-uzhangsan-ppassword-pkmy-openssh-private-key-sfmy-server-list-file-path-srcfthe-file-name-to-be-download-ddthe-file-dir-to-save_vote
c.可把b中的命名设置成alias(windows平台我用的Cmder终端,可设置alias),使用就简单了
4.脚本说明:
a.argparse模块使用接收命令行参数,然后分别设置_vote_tie_follow来区分要下载不同类型的服务器日志与传不同的日志路径
b.easylog模块,自己封装的日志模块
c.gevent,对文件中的多个服务器地址使用协程来加快下载
d.paramiko模块,核心使用,ssh连接认证
e.只封装了下载,上传、执行服务器命令等可以自己再扩展
d.当升扮前只是为了满足方便使用,有很多地方可以调和纠错,指正。
‘拾’ 如何使用python执行远程shell脚本
最近有个需求就是页面上执行shell命令,第一想到的就是os.system,
代码如下:
os.system('cat /proc/cpuinfo')
但是发现页面上打印的命令执行结果 0或者1,当然不满足需求了。
尝试第二种方案 os.popen()
代码如下:
output = os.popen('cat /proc/cpuinfo')
print output.read()
通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出。但是无法读取程序执行的返回值)
尝试第三种方案 commands.getstatusoutput() 一个方法就可以获得到返回值和输出,非常好用。
代码如下:
(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
print status, output
Python Document 中给的一个例子,
代码如下:
>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'