当前位置:首页 » 编程语言 » pythonsalt

pythonsalt

发布时间: 2022-05-26 10:48:24

1. 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'])

2. 如何使用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 的第三方库,它是被专门设计出来哈希密码的。

3. python都能干什么

python主要可以做Web 和 Internet开发、科学计算和统计、桌面界面开发、软件开发、后端开发等领域的工作。

Python是一种解释型脚本语言。Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。互联网公司广泛使用Python来做的事一般有:自动化运维、自动化测试、大数据分析、爬虫、Web 等。

(3)pythonsalt扩展阅读

python的主要优点:

简单易学:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。因有极其简单的说明文档,Python极其容易上手。

运行速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。

免费、开源资源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。

可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。

4. 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

5. python 简单爬虫问题

可能是你请求数据错误

现在的数据不是这样么

您需要向该地址网页链接

通过POST或GET方法发送下列字段来访问服务

字段名 类型 必填参数 描述 备注

q TEXT Y 请求翻译query UTF-8编码

from TEXT Y 翻译源语言 语言列表(可设置为auto)

to TEXT Y 译文语言 语言列表(不可设置为auto)

appid INT Y APP ID 可在管理控制台查看

salt INT Y 随机数

sign TEXT Y 签名 appid+q+salt+密钥 的MD5值

6. Python有哪些好用的语言翻译方法

1 import re
2 import urllib.parse, urllib.request
3 import hashlib
4 import urllib
5 import random
6 import json
7 import time
8 from translate import Translator

非python自带的库,如python google translator,需要手动安装,命令pip install mole_name。

1. 网络翻译

1 appid = 'your_appid'
2 secretKey = 'your_secretKey'
3 url_ = 'http://api.fanyi..com/api/trans/vip/translate'
4
5 def translateBai(text, f='ja', t='zh'):
6 salt = random.randint(32768, 65536)
7 sign = appid + text + str(salt) + secretKey
8 sign = hashlib.md5(sign.encode()).hexdigest()
9 url = url_ + '?appid=' + appid + '&q=' + urllib.parse.quote(text) + '&from=' + f + '&to=' + t + \
10 '&salt=' + str(salt) + '&sign=' + sign
11 response = urllib.request.urlopen(url)
12 content = response.read().decode('utf-8')
13 data = json.loads(content)
14 result = str(data['trans_result'][0]['dst'])
15 print(result)

参数:text--待翻文本,f--初始语言,t--目标语言,后面方法类似。

2. 有道翻译

1 url_you = 'http://fanyi.you.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=' \
2 'http://www.you.com/'
3 dict = {}
4 dict['type'] = 'AUTO'
5 dict['doctype'] = 'json'
6 dict['xmlVersion'] = '1.8'
7 dict['keyfrom'] = 'fanyi.web'
8 dict['ue'] = 'UTF-8'
9 dict['action'] = 'FY_BY_CLICKBUTTON'
10 dict['typoResult'] = 'true'
11
12 def translateYou(text):
13 global dict
14 dict['i'] = text
15 data = urllib.parse.urlencode(dict).encode('utf-8')
16 response = urllib.request.urlopen(url_you, data)
17 content = response.read().decode('utf-8')
18 data = json.loads(content)
19 result = data['translateResult'][0][0]['tgt']
20 print(result)

参数主要由字典dict指定,发现没有地方可以指定语言(可能是我没找到),测试结果是不管输入什么语言的文本,输出均是中文。

3. 谷歌翻译

1 url_google = 'http://translate.google.cn'
2 reg_text = re.compile(r'(?<=TRANSLATED_TEXT=).*?;')
3 user_agent = r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' \
4 r'Chrome/44.0.2403.157 Safari/537.36'
5
6 def translateGoogle(text, f='ja', t='zh-cn'):
7 values = {'hl': 'zh-cn', 'ie': 'utf-8', 'text': text, 'langpair': '%s|%s' % (f, t)}
8 value = urllib.parse.urlencode(values)
9 req = urllib.request.Request(url_google + '?' + value)
10 req.add_header('User-Agent', user_agent)
11 response = urllib.request.urlopen(req)
12 content = response.read().decode('utf-8')
13 data = reg_text.search(content)
14 result = data.group(0).strip(';').strip('\'')
15 print(result)

和上面两种方法一样,采用的是访问网页的形式来进行翻译。
还有一种是利用python谷歌翻译模块Translator:
1 def translateGoogle2(text):
2 result = translator.translate(text)
3 print(result)

4. 测试代码
测试过程:
翻译5个字串为一个小的单位,输出消耗时间;
循环10次为一个大的单位,输出消耗时间;
对不同的语言字串和循环次数做过多次测试,发现情况基本类似,所以这里选择了10次。

1 text_list = ['こんにちは', 'こんばんは', 'おはようございます', 'お休(やす)みなさい', 'お元気(げんき)ですか']
2
3 time_ = 0
4 time_you = 0
5 time_google = 0
6 time_google2 = 0
7
8 for i in list(range(1, 11)):
9 time1 = time.time()
10 for text in text_list:
11 translateBai(text)
12 time2 = time.time()
13 print('网络翻译第%s次时间:%s' % (i, time2 - time1))
14 time_ += (time2 - time1)
15
16 time1 = time.time()
17 for text in text_list:
18 translateYou(text)
19 time2 = time.time()
20 print('有道翻译第%s次时间:%s' % (i, time2 - time1))
21 time_you += (time2 - time1)
22
23 time1 = time.time()
24 for text in text_list:
25 translateGoogle(text)
26 time2 = time.time()
27 print('谷歌翻译第%s次时间:%s' % (i, time2 - time1))
28 time_google += (time2 - time1)
29
30 time1 = time.time()
31 for text in text_list:
32 translateGoogle2(text)
33 time2 = time.time()
34 print('谷歌2翻译第%s次时间:%s' % (i, time2 - time1))
35 time_google2 += (time2 - time1)
36
37
38 print('网络翻译时间:%s' % (time_ / 10))
39 print('有道翻译时间:%s' % (time_you / 10))
40 print('谷歌翻译时间:%s' % (time_google / 10))
41 print('谷歌2翻译时间:%s' % (time_google2 / 10))

7. 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,有点不爽,后来找到这个文章。

8. centos6.3 安装salt 支持python2.7.8版本吗

需要Python2.7以上的版本:
Python升级方法:
当系统版本低于(Centos7.0)时,Python版本是2.7以下时,要升级Python到2.7

1.下载python2.7.x
wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
2.解压编译安装
tar -zxvf Python-2.7.6.tgz && cd Python-2.7.6 && ./configure --prefix=/usr/local/bin/ && make all && make install && make clean && make distclean
3.检查安装
/usr/local/bin/python2.7 -V
4.建立软连接,使用系统默认的python指向
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
5.检查
python -V
6.用yum需注意
解决系统 Python 软链接指向 Python2.7 版本后,因为yum是不兼容 Python 2.7的,所以yum不能正常工作,我们需要指定 yum 的Python版本
vim /usr/bin/yum
将头部#!/usr/bin/python 改成#!/usr/bin/python2.6.6(刚刚备份的)

9. python hashlib.sha512 为什么加密结果和shadow不一样

python的话直接使用crypt就行计算的时候要加上salt值。

cat /etc/shadow | greb root

得到密文。密文由3部分组成,以”$”分隔,第一部分为ID,第二部分为盐值,第三部分为加密密文

密文示例:
$6$D0xsORq3b7GGsbYv$7L8myKFcJf1FqnvtzD.Zcbx9PeHnwGH1YJm/

$id$salt$encrypted
采用方法盐值加密密文

$6$D0xsORq3b7GGsbYv #这一段就是盐值,在加密的时候连同前面的ID一起加密

importcrypt

printcrypt.crpyt("password","$6$D0xsORq3b7GGsbYv")

就可以得到shadow中的密文了。

其实shadow中的密文并不是直接由sha512得出的,还有一些其他操作,例如使用base64加密了salt和hash,可以看下这里man page

10. 如何用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

热点内容
疯狂java视频 发布:2025-02-12 19:38:17 浏览:149
flash免费上传网站 发布:2025-02-12 19:14:03 浏览:190
买脚本一般都在哪里 发布:2025-02-12 19:08:07 浏览:823
恋舞刷分脚本se下载 发布:2025-02-12 18:56:53 浏览:8
c语言大小写转换程序 发布:2025-02-12 18:55:23 浏览:524
三星耳机坏了怎么配置 发布:2025-02-12 18:54:46 浏览:975
简易编程语言 发布:2025-02-12 18:48:07 浏览:523
咋上传视频 发布:2025-02-12 18:45:50 浏览:288
python的包机制 发布:2025-02-12 18:45:49 浏览:448
sqlserver网络实用工具 发布:2025-02-12 18:38:56 浏览:767