例
my_list = [2193, 2192, 2191, 2204, 2203, 2202, 2201, 2200, 2199, 2197]
print(" ".join(str(x) for x in my_list))
输出结果
2193 2192 2191 2204 2203 2202 2201 2200 2199 2197
例
my_list = [2193, 2192, 2191, 2204, 2203, 2202, 2201, 2200, 2199, 2197]
print(" ".join(str(x) for x in my_list))
输出结果
2193 2192 2191 2204 2203 2202 2201 2200 2199 2197
比较容易记忆的是用内置的set
l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) print l2
还有一种据说速度更快的,没测试过两者的速度差别
l1 = ['b','c','d','b','c','a','a']
l2 = {}.fromkeys(l1).keys()
print l2
这两种都有个缺点,祛除重复元素后排序变了:
['a', 'c', 'b', 'd']
如果想要保持他们原来的排序:
用list类的sort方法
l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) l2.sort(key=l1.index) print l2
也可以这样写
l1 = ['b','c','d','b','c','a','a'] l2 = sorted(set(l1),key=l1.index) print l2
也可以用遍历
l1 = ['b','c','d','b','c','a','a']
l2 = []
for i in l1:
if not i in l2:
l2.append(i)
print l2
上面的代码也可以这样写
l1 = ['b','c','d','b','c','a','a']
l2 = []
[l2.append(i) for i in l1 if not i in l2]
print l2
这样就可以保证排序不变了:
['b', 'c', 'd', 'a']
参考:
http://blog.csdn.net/zhengnz/article/details/6265282
环境 centos 6.6
在/var/log/messages看到报错
kernel: nf_conntrack: table full, dropping packet.
nf_conntrack 默认最大值 65536
cat /proc/sys/net/ipv4/ip_conntrack_max | wc -l
超过这个 65536 便会报错。
现在将值改为 655360 并且永久生效
首先修改/etc/sysctl.conf
net.nf_conntrack_max = 655360 net.netfilter.nf_conntrack_max = 655350 net.netfilter.nf_conntrack_tcp_timeout_established = 1200
然后修改/etc/sysconfig/iptables-config
注意如下两行
IPTABLES_MODULES="ip_conntrack" IPTABLES_SYSCTL_LOAD_LIST=".nf_conntrack"
之后重新 iptables.
hosts文件里是这样写的
[backup_tar]
host1
host2
[backup_notar]
host3
host4
针对 backup_tar 中的 hosts 只执行某条 task
- cron: name="backup" minute=0 hour=4
user="root" job="/bin/sh /root/mysql_backup.sh full >> /dev/null 2>&1" backup=yes
when: inventory_hostname in groups['backup_tar']
参考:https://groups.google.com/forum/#!topic/ansible-project/lr7nXyGw0UY
如果要了解一两个 ip 的一些简单的情况如 ls -l /data0/ | wc -l,以前是要写到文件里的。
ansible -i hosts all -m shell -a "ls -l /data0/ | wc -l"
也可以这样,一台机器最后面要有一个逗号
ansible all -i 192.168.1.1, -m shell -a "ls -l /data0/ | wc -l"
两台机器用逗号隔开,并且不能有空格
ansible all -i 192.168.1.1,192.168.1.2 -m shell -a "ls -l /data0/ | wc -l"
参考: http://stackoverflow.com/questions/17188147/how-to-run-ansible-without-specifying-the-inventory-but-the-host-directly?answertab=votes#tab-top
题外话:
除了上面的 shell 模块,还有 command, script 可以在被管理机器上方便执行 shell.
ansible all -i hosts -l 192.168.1.183 -m script -a uptime.sh
使用 ansible 管理 centos4 的机器会报错, 默认安装的 python 是 2.3.4 ,需要在 centos4 上的机器添加 python2.7 的环境,以便于被 ansible 管理。
下载安装
wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tgz --no-check-certificate tar xzf Python-2.7.5.tgz cd Python-2.7.5 ./configure --enable-shared make make altinstall
接下来创建一个记录 python lib 目录的配置文件,/etc/ld.so.conf.d/python27.conf 里记录
/usr/local/lib
并用 ldconfig 加载到系统
ldconfig -v -f /etc/ld.so.conf.d/python27.conf
保证 yum 可用
cp /usr/bin/python /usr/bin/python2.3.4 vim /usr/bin/yum 第一行改为 #!/usr/bin/python2.3.4
系统级别
ln -nfs /usr/local/bin/python2.7 /usr/bin/python
参考:
http://stivesso.blogspot.jp/2014/08/ansible-hosts-install-alternate.html