㈠ python怎么导入saltapi
mlf不一定是一个eclipse项目。如果是eclipse项目,mlf目录下一定有一个叫.project的隐藏目录,你自己核实一下。我建议用新建项目代替导入项目。把mlf文件夹移动到eclipse工作目录下,然后新建项目,输入mlf,再确定即可。
㈡ 如何用python调用百度翻译
#/usr/bin/envpython
#coding=utf8
importhttplib
importmd5
importurllib
importrandom
appid='20151113000005349'
secretKey='osubCEzlGjzvw8qdQc41'
httpClient=None
myurl='/api/trans/vip/translate'
q='apple'
fromLang='en'
toLang='zh'
salt=random.randint(32768,65536)
sign=appid+q+str(salt)+secretKey
m1=md5.new()
m1.update(sign)
sign=m1.hexdigest()
myurl=myurl+'?appid='+appid+'&q='+urllib.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+sign
try:
httpClient=httplib.HTTPConnection('api.fanyi..com')
httpClient.request('GET',myurl)
#response是HTTPResponse对象
response=httpClient.getresponse()
printresponse.read()
exceptException,e:
printe
finally:
ifhttpClient:
httpClient.close()
在调用网络翻译api之前,您需要申请开发者权限,获取APP ID及密钥。 一个账号只能获得一个APP ID和密钥。
参考价格:若当月翻译字符数≤2百万,免费;若超过2百万字符,按照49元/百万字符支付当月全部翻译字符数费用。
参考http://api.fanyi..com/api/trans/proct/apidoc
㈢ salt可以执行python脚本吗
利用saltstacksalt.client模块python命令行或者python脚本执行相应salt命令
master端想要执行类似 salt '*' cmd.run 'uptime' saltclient写
importsalt.client
local=salt.client.LocalClient()
local.cmd('*','cmd.run',['uptime'])
放台执行返jid
cmd_async('*','cmd.run',['uptime'])
㈣ 如何使用Python 3的两个库来加解密字符串
哈希
如果需要用到安全哈希算法或是消息摘要算法,那么你可以使用标准库中的 hashlib 模块。这个模块包含了符合 FIPS(美国联邦信息处理标准)的安全哈希算法,包括 SHA1,SHA224,SHA256,SHA384,SHA512 以及 RSA 的 MD5 算法。Python 也支持 adler32 以及 crc32 哈希函数,不过它们在 zlib 模块中。
哈希的一个最常见的用法是,存储密码的哈希值而非密码本身。当然了,使用的哈希函数需要稳健一点,否则容易被破解。另一个常见的用法是,计算一个文件的哈希值,然后将这个文件和它的哈希值分别发送。接收到文件的人可以计算文件的哈希值,检验是否与接受到的哈希值相符。如果两者相符,就说明文件在传送的过程中未经篡改。
让我们试着创建一个 md5 哈希:
>>> import hashlib >>> md5 = hashlib.md5() >>> md5.update('Python rocks!') Traceback (most recent call last): File "<pyshell#5>", line 1, in <mole> md5.update('Python rocks!') TypeError: Unicode-objects must be encoded before hashing >>> md5.update(b'Python rocks!') >>> md5.digest() b'\x14\x82\xec\x1b#d\xf6N}\x16*+[\x16\xf4w'
让我们花点时间一行一行来讲解。首先,我们导入 hashlib ,然后创建一个 md5 哈希对象的实例。接着,我们向这个实例中添加一个字符串后,却得到了报错信息。原来,计算 md5 哈希时,需要使用字节形式的字符串而非普通字符串。正确添加字符串后,我们调用它的 digest 函数来得到哈希值。如果你想要十六进制的哈希值,也可以用以下方法:
>>> md5.hexdigest() ''
实际上,有一种精简的方法来创建哈希,下面我们看一下用这种方法创建一个 sha1 哈希:
>>> sha = hashlib.sha1(b'Hello Python').hexdigest() >>> sha ''
可以看到,我们可以同时创建一个哈希实例并且调用其 digest 函数。然后,我们打印出这个哈希值看一下。这里我使用 sha1 哈希函数作为例子,但它不是特别安全,读者可以随意尝试其他的哈希函数。
密钥导出
Python 的标准库对密钥导出支持较弱。实际上,hashlib 函数库提供的唯一方法就是 pbkdf2_hmac 函数。它是 PKCS#5 的基于口令的第二个密钥导出函数,并使用 HMAC 作为伪随机函数。因为它支持“加盐(salt)”和迭代操作,你可以使用类似的方法来哈希你的密码。例如,如果你打算使用 SHA-256 加密方法,你将需要至少 16 个字节的“盐”,以及最少 100000 次的迭代操作。
简单来说,“盐”就是随机的数据,被用来加入到哈希的过程中,以加大破解的难度。这基本可以保护你的密码免受字典和彩虹表(rainbow table)的攻击。
让我们看一个简单的例子:
>>> import binascii >>> dk = hashlib.pbkdf2_hmac(hash_name='sha256', password=b'bad_password34', salt=b'bad_salt', iterations=100000) >>> binascii.hexlify(dk) b''
这里,我们用 SHA256 对一个密码进行哈希,使用了一个糟糕的盐,但经过了 100000 次迭代操作。当然,SHA 实际上并不被推荐用来创建密码的密钥。你应该使用类似 scrypt 的算法来替代。另一个不错的选择是使用一个叫 bcrypt 的第三方库,它是被专门设计出来哈希密码的。
㈤ saltstack支持python3.0以上吗
Salt Stack 是一个命令行工具,这里没有任何地方需要你点击你的鼠标,执行的结果也会像字符界面一样反馈到你的屏幕上。
这很好吧,它使得事情变得简单,并且很多服务器不需要一个图形界面。
㈥ python脚本中怎么运行saltstack命令
利用saltstack的salt.client模块可以在python的命令行下或者python脚本里执行相应的salt命令
master端想要执行类似 salt '*' cmd.run 'uptime' 在saltclient里可以这么写
importsalt.client
local=salt.client.LocalClient()
local.cmd('*','cmd.run',['uptime'])
也可以放到后台执行只返回一个jid
cmd_async('*','cmd.run',['uptime'])
得到jid可以通过get_cache_returns(jid)方法来获取执行结果,在没有执行完成以前是为空的所以可以写一个while来一直读取结果直到读取到或者超出规定时间为止
importsalt.client
local=salt.client.LocalClient()
t=0
㈦ python如何启动在github网站上下载的程序
命令行执行:salt '*' test.ping
reference:https://docs.saltstack.com/en/latest/topics/installation/index.html
㈧ 怎么通过salt-ssh进行认证
salt-ssh 可以独立运行的,不用minion的~ 要是需要用salt-ssh的特殊参数,比如grains获取数据的话,还是需要安装minion的,不然他是不好判断你是redhat,debian的 ~ 说句废话 要是能安装minion,谁还用salt-ssh呀。。。。
这类ssh的集群工具还是不少的,我这边简单分析下优缺点!
pdsh、pssh 这东西是要建立在你做好了key关联之后,他的优点就是简单,并发执行。
Python
1
2
3
4
5
6
7
vi server1.txt
192.168.1.11
192.168.1.12
192.168.1.13
192.168.1.14
pssh -h server1.txt -l root -P dir
expect 最大的有点就是交互,但是要成高性能的话,需要自己写多线程的。
Python
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/expect -f
set toip [lindex $argv 0 ]
set ip 10.2.20.14
set password 123123
set timeout 10
spawn ssh root@$ip
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*password:" { send "$password\r" }
}
fabric、paramiko python之利器,用过一段时间,该有的都有的,很是强大
Python
1
2
3
4
from fabric import env
env.hosts = ['user1@host1:port1', '[email protected]']
env.passwords = {'user1@host1:port1': 'password1', '[email protected]': 'password2'}
但是个人觉得salt-api背靠着saltstack这个大树,前景还是不错的。
salt-ssh 可以代替expect之类的密码推送脚本,另外说明下 salt-ssh 用的是sshpass进行密码交互的,首先看下版本,17版本后才开始有的,现在基本都是2014了。
我们先开始安装 salt-ssh ~
Python
1
2
3
4
git clone https://github.com/saltstack/salt.git
cd salt
./setup.py install
salt-ssh
我们可以把要执行的信息,也就是ip,帐号,密码等 都放到一个文件里面。当然
文件路径是可以随便定义的,官方是指定到了 /etc/salt/roster
那我们先来测试下salt-ssh最基本的用法。
接着来测试下他的性能,注重于是不是并发执行 ~ 结果让人很爽,是多进程并发执行的~
详细的参数:
指定roster信息文件,这样可以随意配置定义了。
配置一个默认的密码,然后帮你推送下 ~~~ 这个功能有点怪,规范点的公司,大家的密码都是随机生成的。当然也可以配置成不同的ip不同的密码。
重大发现: 我在这里补充下~
salt-ssh 第一次执行是根据roster的账号密码推送密码,来实现自动交互的。
执行完了后 会在目标的服务器里面,追加master端的key
然后你就可以删除roster里面的passwd 密码条目了。
我给大家测试下,我把passwd删除了,还是可以运行,这里就不是用sshpass推送密码了,而是直接通过key了 !!!
那关于salt-ssh的参数还是不少的,大家自己看吧 ~
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
salt-ssh
Synopsis
salt-ssh '*' [ options ] sys.doc
salt-ssh -E '.*' [ options ] sys.doc cmd
Description
Salt ssh allows for salt routines to be executed using only ssh for transport
Options
-r, --raw, --raw-shell
Execute a raw shell command.
要执行的命令,支持管道和常用的特殊符号
--roster-file
Define which roster system to use, this defines if a database backend, scanner, or custom roster system is used. Default is the flat file roster.
指定一个信息文件
--refresh, --refresh-cache
Force a refresh of the master side data cache of the target's data. This is needed if a target's grains have been changed and the auto refresh timeframe has not been reached.
--max-procs
Set the number of concurrent minions to communicate with. This value defines how many processes are opened up at a time to manage connections, the more running process the faster communication should be, default is 25.
--passwd
Set te default password to attempt to use when authenticating.
--key-deploy
Set this flag to attempt to deploy the authorized ssh key with all minions. This combined with --passwd can make initial deployment of keys very fast and easy.
--version
Print the version of Salt that is running.
--versions-report
Show program's dependencies and version number, and then exit
-h, --help
Show the help message and exit
-c CONFIG_DIR, --config-dir=CONFIG_dir
The location of the Salt configuration directory. This directory contains the configuration files for Salt master and minions. The default location on most systems is /etc/salt.
Target Selection
-E, --pcre
The target expression will be interpreted as a PCRE regular expression rather than a shell glob.
-L, --list
The target expression will be interpreted as a comma-delimited list; example: server1.foo.bar,server2.foo.bar,example7.quo.qux
-G, --grain
The target expression matches values returned by the Salt grains system on the minions. The target expression is in the format of '<grain value>:<glob expression>'; example: 'os:Arch*'
This was changed in version 0.9.8 to accept glob expressions instead of regular expression. To use regular expression matching with grains, use the --grain-pcre option.
--grain-pcre
The target expression matches values returned by the Salt grains system on the minions. The target expression is in the format of '<grain value>:< regular expression>'; example: 'os:Arch.*'
-N, --nodegroup
Use a predefined compound target defined in the Salt master configuration file.
-R, --range
Instead of using shell globs to evaluate the target, use a range expression to identify targets. Range expressions look like %cluster.
Using the Range option requires that a range server is set up and the location of the range server is referenced in the master configuration file.
Logging Options
Logging options which override any settings defined on the configuration files.
-l LOG_LEVEL, --log-level=LOG_LEVEL
Console logging log level. One of all, garbage, trace, debug, info, warning, error, quiet. Default: warning.
--log-file=LOG_FILE
Log file path. Default: /var/log/salt/ssh.
--log-file-level=LOG_LEVEL_LOGFILE
Logfile logging log level. One of all, garbage, trace, debug, info, warning, error, quiet. Default: warning.
Output Options
--out
Pass in an alternative outputter to display the return of data. This outputter can be any of the available outputters:
grains, highstate, json, key, overstatestage, pprint, raw, txt, yaml
Some outputters are formatted only for data returned from specific functions; for instance, the grains outputter will not work for non-grains data.
If an outputter is used that does not support the data passed into it, then Salt will fall back on the pprint outputter and display the return data using the Python pprint standard library mole.
Note
If using --out=json, you will probably want --static as well. Without the static option, you will get a JSON string for each minion. This is e to using an iterative outputter. So if you want to feed it to a JSON parser, use --static as well.
--out-indent OUTPUT_INDENT, --output-indent OUTPUT_INDENT
Print the output indented by the provided value in spaces. Negative values disable indentation. Only applicable in outputters that support indentation.
--out-file=OUTPUT_FILE, --output-file=OUTPUT_FILE
Write the output to the specified file.
--no-color
Disable all colored output
--force-color
Force colored output
那么如果想针对salt-ssh模块进行二次开发,或者加点下功能扩展。
㈨ 如何使用Salt 的各种状态值
salt的安装:
master端:
#yum install salt-master -y salt主控端安装
# vim /etc/salt/master salt主配置文件修改
interface: 服务监听IP
auto_accept: True(可选,key通过‘salt-key -a keyname’命令手动进行认证)
注意:keyname 就是客户端中设置的id标识(可以查看salt-minion端的配置)
#salt-master -l debug debug模式,查看salt都进行哪些操作
#/etc/init.d/salt-master restart 重启salt服务
#/etc/init.d/salt-master status 查看状态
#netstat -antlp | grep 4505 确保消息发布端口正常
#netstat -antlp | grep 4506 确保客户端与服务端通信端口正常
#/etc/init.d/salt-master restart
# /etc/init.d/salt-master status
# salt-key 查看认证相关信息
# salt-key -a wy-pe2 手动添加认证key(给wy-pe2主机添加认证)
#iptables -F 关闭防火墙以免影响认证
#salt-key -a wy-pe2
#salt-key -L 查看认证信息(会有显示已经认证和未认证的相关信息)
[root@wy-pe1 ~]# salt-key -L
Accepted Keys:
wy-pe2 已经允许的key(表示wy-pe2已经允许认证了)
Unaccepted Keys:
Rejected Keys:
#cd /etc/salt/pki/master/minions 在master中的minions目录中生成认证的key
#setenforce 0 暂时关闭selinux
#/etc/init.d/salt-master restart
执行远程命令(使用salt内建的模块):
#salt ‘wy-pe2′ test.ping 测试master和minion进行通信(在master端进行ping响应测试)
[root@wy-pe1 ~]# salt ‘wy-pe2′ test.ping 如果能ping通,则为True
wy-pe2:
True
#lsof -i:4505 查看到minion端都和4505保持建立
[root@wy-pe1 ~]# lsof -i:4505
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 8568 root 12u IPv4 63217 0t0 TCP *:4505 (LISTEN)
salt-mast 8568 root 14u IPv4 65101 0t0 TCP wy-pe1:4505->wy-pe2:51237 (ESTABLISHED)(表示建立连接了)
注意:如果认证那块没做好,就会影响相关的链接
客户端安装:
minion端安装配置:
#yum install salt-minion -y
#vim /etc/salt/minion 修改minion客户端主配置
master: 服务端主机名
id: 客户端主机名(其实也就是认证key的名字) 用来和master进行认证
#/etc/init.d/salt-minion restart 重启服务
#cd /etc/salt/pki/minion/ 在这个目录底下会生成两个认证文件(minion.pub minion.pem)
salt-minion端不能正常启动的解决步骤:(一般就是iptables和selinux的影响)
#/etc/init.d/salt-minion restart
# tail -f /var/log/messages
#/etc/init.d/salt-minion restart
#iptables -F
#tail -f /var/log/salt/minion
#salt-minion -l debug
#setenforce 0
#/etc/init.d/salt-minion restart
安装完毕,在master和minion认证完毕之后会在minion主机上的/etc/salt/pki/minion/目录底下生成新的minion_master.pub
问题1:档master和minion进行认证的时候,master没有接收到public key(minion)
(这个在后来的链接过程中会造成master和minion不能链接)
问题2:辅机salt-minion总是在查看服务状态的时候显示失败(but pid exits!)
# salt-minion -l debug 查看salt客户端详细信息
salt的简单使用:
salt可以直接让minion执行模块命令,也可以直接执行shell命令
1.salt -C ‘wy-pe1 and wy-pe2 or wy-peN’ test.ping -C表示多参数(表示在测试多台主机的存活状态)
# salt ‘*’ disk.usage 查看磁盘使用情况(使用内建模块查看所有minion端的磁盘使用情况)
#salt ‘*’ cmd.run ‘df -h’ 使用cmd.run直接调用远程shell命令(功能同上)
# salt ‘*’ cmd.run “cat /root/lall” 查看客户端主机的/root/lall文件
2.nodegroup对minion进行分组:
nodegroups:
group1: ‘[email protected],bar.domain.com,baz.domain.com or bl*.domain.com’
group2: ‘G@os :Debian and foo.domain.com’
group3:’wy-pe2′
进行分组测试:
# salt -N group3 test.ping
wy-pe2:
True
3.grains对minion基本信息的管理:
salt ‘wy-pe2′ grins.ls 查看grains分类
salt ‘wy-pe2′ grins.items 查看minnon基本信息(硬件参数)
4.pillar对敏感信息的管理,只有匹配到的节点才能获取和使用
默认pillar数据定义文件存储路径:/srv/pillar
状态管理:
1.salt基于minion进行状态的管理(state)
类似于pupet的pp文件功能,salt的state文件扩展文件名为.sls,采用的是和puppet一样的设计思路。即以master
端的文件状态来确定minion端的一些状态信息设置。(安装的软件包,服务的运行状态以及需要同步的文件配置)
注意:salt默认的根目录在/srv/salt中,如果没有需要进行建立。
top.sls:这个文件类似于puppet的site.pp文件,作为“最高同步”操作的入口文件,执行“最高同步”操作时,将从此sls文件中获取状态对minion进行同步
示例:(注意,salt文件完全采用ymal格式,对代码的缩进有着严格的要求)
#vim /srv/salt/servers_package.sls
httpd: 项目名
pkg: 类型
– installed 动作(表示安装httpd包)
service:
– running
– enable:True
vim-enhanced:
pkg:
– installed
tomcat环境
openjdk-7-jdk:
pkg:
– installed
tomcat7:
pkg:
– installed
– require:
– pkg: openjdk-7-jdk
# salt ‘wy-pe2′ state.sls servers_package 按照sls文件中的配置对wy-pe2进行服务配置
管理配置文件
httpd:
pkg:
– installed
file.managed: 文件管理(文件同步操作)
– name: /etc/httpd/conf/httpd.conf
– source: salt://httpd/httpd.conf
# salt ‘wy-pe2′ state.highstate 应用修改(给minion永久添加状态)
3.使用salt schele对minion进行实时更新,让minion自觉的保持某个状态
4.实时管理
有时候我们需要临时的查看某个机器上的某个文件,或者执行某个命令
cmd.run方式:(salt ‘$targeting’ cmd.run ‘$cmd’)用来远程执行shell命令
# salt ‘wy-pe2′ cmd.run ‘ifconfig eth0′ 查看某台主机的网络接口
cmd.script方式:可以向远程主机执行脚本
#salt ‘*’ cmd.script salt://useradd.sh 向minion主机上执行useradd.sh脚本(salt://是salt的默认发布目录,即/srv/salt)
pkg.install方式:制定主机安装软件
#salt ‘wy-pe2′ pkg.install vsftpd 指定主机安装软件
# salt ‘*’ network.interfaces 查看远程主机接口
# salt-cp ‘wy-pe2′ salt-cmd /home/xxb2 复制文件到指定的系统上(当前目录的salt-cmd)
salt是主命令,一般用来执行命令模块。
salt-cp用来复制文件到制定的系统上去
salt-key用来和minion之间进行身份验证
salt-master为服务端的主守护进程用于控制minion
salt-run为前端命令执行
mole方式:(模块查看方式#salt ‘*’ sys.doc)
#salt ‘*’ disk.usage 查看磁盘使用情况
# salt ‘*’ grains.item os/osrelease/oscodename
# salt ‘*’ user(group).info xxb2
# salt ‘*’ ip.get_interface eth0
#salt ‘*’ lvm.vgdisplay
salt相关管理命令:
salt-run manage.up 查看存活的minion
salt-run manage.down 查看死掉的minion
salt-run manage.down removekeys=True 查看down掉的minion,并将其删除
salt-run manage.status 查看minion的相关状态
salt-run manage.versions 查看slat的所有master和minion的版本信息
㈩ Python生成8位随机字符串的方法分析
Python生成8位随机字符串的方法分析
篇文章主要介绍了Python生成8位随机字符串的方法,结合实例形式对比分析了2种比较常用的随机字符串生成技巧,具有一定参考借鉴价值,需要的朋友可以参考下
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
import string
#第一种方法
seed = "!@#$%^&*()_+=-"
sa = []
for i in range(8):
sa.append(random.choice(seed))
salt = '.join(sa)
print salt
#运行结果:l7VSbNEG
#第二种方法
salt = '.join(random.sample(string.ascii_letters + string.digits, 8))
print salt
#运行结果:VOuCtHZs
生成随机字符串
在加密用户密码的时候,一个好方法就是产生一个随机字符串,然后再和密码进行混合求摘要。产生随机字符串的方法找到了这些。
第一种比较简单,易于理解
第二种不好理解,但很简洁
本来我只想随机取四个数字的,用的random.randint(1000,9999)。但是这个开头不会出现0,有点不爽,后来找到这个文章。