pssh系列工具
一、pssh简介及安装
首先我们来了解下什么是pssh,它是干嘛用的?pssh是一个python编写可以在多台服务器上执行命令的工具,也可以实现文件复制。换而言之就是一个批量管理多台服务器的一个小工具。常常我们有这样的经历,就是需要在很多台主机上执行同一命令,在以前我们需要编写一个脚本,然后写一个循环,然后写上要执行的命令,感觉挺麻烦的,有了pssh这个工具,很多事情都不需要我们编写脚本去完成了,用pssh管理多台主机,就好像在自己主机上执行命令一样,我们不再编写脚本就可以实现管理多台主机。接下来我们来安装使用pssh吧
1、查看pssh包信息
[root@test ~]# yum info pssh
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
Available Packages
Name : pssh
Arch : noarch
Version : 2.3.1
Release : 5.el6
Size : 50 k
Repo : epel
Summary : Parallel SSH tools
URL : http://code.google.com/p/parallel-ssh/
License : BSD
Description : This package provides various parallel tools based on ssh and scp.
: Parallell version includes:
: o ssh : pssh
: o scp : pscp
: o nuke : pnuke
: o rsync : prsync
: o slurp : pslurp
[root@test ~]#
说明:可以看到pssh这个包主要功能就是提供了各种基于ssh和scp的命令行工具,包里包含了pssh、pscp、pnuke、prsync、pslurp,这五个工具。这个包来源epel,所以在查看和安装之前请先配好自己的epel源。
2、安装pssh包
[root@test ~]# yum install -y pssh
二、pssh工具的使用
pssh命令选项有如下:
--version:查看版本信息
[root@test ~]# pssh --version
2.3.1
[root@test ~]#
-h:主机文件列表,内容格式"[user@]host[:port]"
[root@docker test]#cat > iplist << EOF
> root@192.168.0.128
> root@192.168.0.217
> qiuhom@192.168.0.218
> EOF
[root@docker test]#cat iplist
root@192.168.0.128
root@192.168.0.217
qiuhom@192.168.0.218
[root@docker test]#pssh -h iplist 'ls -l'
[1] 22:08:50 [SUCCESS] root@192.168.0.128
[2] 22:08:50 [SUCCESS] root@192.168.0.217
[3] 22:08:50 [SUCCESS] qiuhom@192.168.0.218
[root@docker test]#
说明:以上命令的意思是在我iplist定义的主机上执行ls -l命令,这里要说一下,pssh默认是基于key认证连接远程主机,所以我在执行上面的命令没有输入口令。
-H:主机字符串,内容格式"[user@]host[:port]"。
[root@docker ~]#pssh -H 192.168.0.128 'ls /'
[1] 22:17:40 [SUCCESS] 192.168.0.128
[root@docker ~]#
说明:-H是指定某一台主机的选项,当然要指定多台主机,可以用-H一一指定,也可以用-H 指定很多主机,但是每个主机用空格隔开,且多个主机要用引号引起来。
-A:手动输入密码模式
[root@docker ~]#pssh -H qiuhom@192.168.0.99:41319 -A 'ls'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 22:40:20 [SUCCESS] qiuhom@192.168.0.99:41319
[root@docker ~]#
说明:pssh默认是用ssh的key验证来执行命令,如果我们要管理没有做SSHkey验证的主机,那么我们可以用-A来指定手动输入密码模式,有关ssh基于key认证登录,请参考本人博客https://www.cnblogs.com/qiuhom-1874/p/11783371.html
-i:每个服务器内部处理信息输出
[root@docker ~]#pssh -h test/iplist -i 'ip addr show'
[1] 22:44:31 [SUCCESS] root@192.168.0.128
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:41:ff:c0 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.128/24 brd 192.168.0.255 scope global eth1
inet6 fe80::20c:29ff:fe41:ffc0/64 scope link
valid_lft forever preferred_lft forever
[2] 22:44:31 [FAILURE] qiuhom@192.168.0.218 Exited with error code 127
Stderr: bash: ip: command not found
[3] 22:44:31 [SUCCESS] root@192.168.0.217
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:98:0a:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.217/24 brd 192.168.0.255 scope global dynamic ens33
valid_lft 4184sec preferred_lft 4184sec
inet6 fe80::f565:ff52:6ab3:b9da/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:f8:82:a0 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:f8:82:a0 brd ff:ff:ff:ff:ff:ff
[root@docker ~]#
说明:在我们不指定选项-i,pssh默认只输出执行命令的成功与失败状态,并不会把执行的结果信息打印出来。使用-i我们可以把在每台主机上执行命令的结果和命令执行成功与否一并显示。上面有一个centos6的主机上没有装iproute包所以 默认没有ip这个命令,所以命令没有执行成功。
-l登录使用的用户名
[root@docker ~]#pssh -H 192.168.0.218 -l qiuhom -i 'whoami'
[1] 22:49:46 [SUCCESS] 192.168.0.218
qiuhom
[root@docker ~]#pssh -H 192.168.0.218 -l root -i -A 'whoami'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 22:50:03 [SUCCESS] 192.168.0.218
root
[root@docker ~]#
说明:-l选项就是指定以那个用户执行命令,这个指定的用户是远程主机上的用户。通常-l(小写L) 与-A配合使用。
-o:输出的文件目录
[root@docker ~]#pssh -o /root/dr1/ -h test/iplist 'ls /'
[1] 23:02:44 [SUCCESS] root@192.168.0.128
[2] 23:02:44 [SUCCESS] qiuhom@192.168.0.218
[3] 23:02:44 [SUCCESS] root@192.168.0.217
[root@docker ~]#tree /root/dr1/
/root/dr1/
├── qiuhom@192.168.0.218
├── root@192.168.0.128
└── root@192.168.0.217 0 directories, 3 files
[root@docker ~]#cat /root/dr1/qiuhom@192.168.0.218
bin
boot
dev
etc
home
lib
lib64
lost+found
media
misc
mnt
net
opt
proc
root
sbin
selinux
srv
sys
tmp
usr
var
[root@docker ~]#
说明:-o是指定把命令执行的结果输出到以主机命名的文件存放地。也就是说命令执行后的结果保存在以主机命名的一个文件里,-o就是指定一个目录存放这些文件的。
-t:TIMEOUT超时时间设置,0无限
[root@docker ~]#pssh -t 3 -h test/iplist -i 'ping 8.8.8.8'
[1] 23:09:39 [FAILURE] root@192.168.0.128 Timed out, Killed by signal 9
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=52 time=53.5 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=52 time=53.6 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=52 time=53.5 ms
[2] 23:09:39 [FAILURE] root@192.168.0.217 Timed out, Killed by signal 9
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=52 time=54.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=52 time=53.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=52 time=53.4 ms
[3] 23:09:39 [FAILURE] qiuhom@192.168.0.218 Timed out, Killed by signal 9
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=52 time=53.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=52 time=53.9 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=52 time=53.6 ms
[root@docker ~]#
以上就是pssh工具的常用选项说明以及用法
三、pscp.pssh命令选项说明以及使用
pscp.pssh功能是将本地文件批量复制到远程主机
命令用法:
pscp.pssh [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] local remote
说明:pscp.pssh以上很多选项和pssh用法是一样的,比如-A -H -h -l等等
-v:显示复制过程
-r:递归复制目录
[root@docker ~]#pscp.pssh -r -h test/iplist scripts/ /home/
[1] 23:27:57 [SUCCESS] root@192.168.0.128
[2] 23:27:57 [FAILURE] qiuhom@192.168.0.218 Exited with error code 1
[3] 23:27:57 [SUCCESS] root@192.168.0.217
[root@docker ~]#pssh -h test/iplist -i 'ls /home/'
[1] 23:28:30 [SUCCESS] root@192.168.0.128
abc
admin
scripts
tom
[2] 23:28:30 [SUCCESS] qiuhom@192.168.0.218
qiuhom
testuser1
[3] 23:28:31 [SUCCESS] root@192.168.0.217
roo
scripts
tom
[root@docker ~]#
说明:可以看到我们把指定目录递归复制到目标主机上了,上面有一个主机失败了,原因是那个主机上是一个普通用户做的SSH key认证,我们用的是qiuhom这个普通用户的身份在远程主机上管理,因为qiuhom这个普通用户对/home/目录没有写权限,所以执行失败了。
示例:
将本地的单个文件复制到远程主机上
[root@docker ~]#pssh -H qiuhom@192.168.0.218 -i 'ls -l /home/qiuhom/'
[1] 23:39:53 [SUCCESS] qiuhom@192.168.0.218
总用量 0
[root@docker ~]#pscp.pssh -H qiuhom@192.168.0.218 /etc/fstab /home/qiuhom/
[1] 23:40:26 [SUCCESS] qiuhom@192.168.0.218
[root@docker ~]#pssh -H qiuhom@192.168.0.218 -i 'ls -l /home/qiuhom/'
[1] 23:40:29 [SUCCESS] qiuhom@192.168.0.218
总用量 4
-rw-r--r--. 1 qiuhom qiuhom 552 11月 8 23:40 fstab
[root@docker ~]#
将本地多个文件复制到远程主机上
[root@docker ~]#pssh -H qiuhom@192.168.0.218 -i 'ls -l /home/qiuhom/'
[1] 23:40:29 [SUCCESS] qiuhom@192.168.0.218
总用量 4
-rw-r--r--. 1 qiuhom qiuhom 552 11月 8 23:40 fstab
[root@docker ~]#pscp.pssh -H qiuhom@192.168.0.218 /root/f1 /etc/inittab /var/log/messages /home/qiuhom/
[1] 23:42:01 [SUCCESS] qiuhom@192.168.0.218
[root@docker ~]#pssh -H qiuhom@192.168.0.218 -i 'ls -l /home/qiuhom/'
[1] 23:42:06 [SUCCESS] qiuhom@192.168.0.218
总用量 248
-rw-r--r--. 1 qiuhom qiuhom 18 11月 8 23:41 f1
-rw-r--r--. 1 qiuhom qiuhom 552 11月 8 23:40 fstab
-rw-r--r--. 1 qiuhom qiuhom 511 11月 8 23:41 inittab
-rw-------. 1 qiuhom qiuhom 239787 11月 8 23:41 messages
[root@docker ~]#
将本地目录批量复制到远程主机上
[root@docker ~]#pssh -H 192.168.0.128 -i 'ls -l /home/'
[1] 23:51:31 [SUCCESS] 192.168.0.128
总用量 0
[root@docker ~]#pscp.pssh -H 192.168.0.128 -r /etc/sysconfig/network-scripts/ /home/
[1] 23:52:32 [SUCCESS] 192.168.0.128
[root@docker ~]#pssh -H 192.168.0.128 -i 'ls -l /home/'
[1] 23:52:53 [SUCCESS] 192.168.0.128
总用量 4
drwxr-xr-x 2 root root 4096 10月 25 03:36 network-scripts
[root@docker ~]#
四、pslurp命令的使用
pslurp命令的功能是将远程主机的文件批量复制到本地
命令用法:
pslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par][-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir] remote local(本地名)
说明:这个工具的用法和pscp.pssh的用法很类似,都是对文件的操作,pscp.pssh是往远程主机上推送,pslurp是从远程主机上拉去文件到本地。
-L:指定从远程主机下载到本机的储存的目录,local是下载到本地后的名称
-r:递归复制目录
示例:
批量下载目标服务器的passwd文件至/root下,并命名为user
[root@docker ~]#ll
总用量 4
drwxr-xr-x 2 root root 24 8月 31 18:04 ansible
drwxr-xr-x 7 root root 95 7月 11 11:21 docker-training
drwxr-xr-x 2 root root 86 11月 8 23:02 dr1
-rw-r--r-- 1 root root 18 11月 8 23:20 f1
drwxr-xr-x 2 root root 42 10月 24 21:51 scripts
drwxr-xr-x 2 root root 47 7月 22 10:11 temp
drwxr-xr-x 2 root root 100 11月 8 23:20 test
[root@docker ~]#pslurp -h test/iplist -L /root/ /etc/passwd user
[1] 00:03:00 [SUCCESS] qiuhom@192.168.0.218
[2] 00:03:00 [SUCCESS] root@192.168.0.217
[3] 00:03:04 [SUCCESS] root@192.168.0.128
[root@docker ~]#ls
192.168.0.128 192.168.0.217 192.168.0.218 ansible docker-training dr1 f1 scripts temp test
[root@docker ~]#ll 192.168.0.128/
总用量 4
-rw-r--r-- 1 root root 1262 11月 9 00:03 user
[root@docker ~]#cat 192.168.0.128/user
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
abc:x:500:500::/home/abc:/bin/bash
admin:x:501:501::/home/admin:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin
tom:x:502:502::/home/tom:/bin/bash
[root@docker ~]#
说明:-L 是指定存放远程主机下载下来的文件存放地,每个主机的文件都会在其指定的本地目录下以远程主机ip为名的目录名下放着,文件名为我们指定的文件名。
将远程主机192.168.0.128 上的/etc/profile.d/目录下载到本地主机
[root@docker test]#ll
总用量 4
-rw-r--r-- 1 root root 59 11月 8 22:04 iplist
[root@docker test]#pslurp -r -H 192.168.0.128 /etc/profile.d/ .
[1] 00:30:09 [SUCCESS] 192.168.0.128
[root@docker test]#tree
.
├── 192.168.0.128
│ └── profile.d
│ ├── colorls.csh
│ ├── colorls.sh
│ ├── cvs.csh
│ ├── cvs.sh
│ ├── glib2.csh
│ ├── glib2.sh
│ ├── lang.csh
│ ├── lang.sh
│ ├── less.csh
│ ├── less.sh
│ ├── modules.csh
│ ├── modules.sh
│ ├── vim.csh
│ ├── vim.sh
│ └── which2.sh
└── iplist 2 directories, 16 files
说明:若未指定文件存放在本地的名字,默认就是存放在当前目录下以远程主机ip为名的目录下,文件名为我们下载远程主机上的文件名。
五、pnuke命令的使用
pnuke命令的功能是能在多个主机上并行杀死进程的程序
命令用法:
pnuke [-vA] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] pattern
说明:以上选项同pssh选项用法一致
示例:
杀死远程主机httpd进程
[root@docker test]#pssh -h iplist -i 'ss -ntl |grep 80'
[1] 01:17:48 [SUCCESS] root@192.168.0.128
LISTEN 0 128 :::80 :::*
[2] 01:17:48 [SUCCESS] root@192.168.0.218
LISTEN 0 128 :::80 :::*
[3] 01:17:48 [SUCCESS] root@192.168.0.217
LISTEN 0 128 :::80 :::*
[root@docker test]#pnuke -h iplist httpd
[1] 01:18:18 [SUCCESS] root@192.168.0.128
[2] 01:18:19 [SUCCESS] root@192.168.0.217
[3] 01:18:19 [SUCCESS] root@192.168.0.218
[root@docker test]#pssh -h iplist -i 'ss -ntl |grep 80'
[1] 01:18:23 [FAILURE] root@192.168.0.128 Exited with error code 1
[2] 01:18:23 [FAILURE] root@192.168.0.218 Exited with error code 1
[3] 01:18:23 [FAILURE] root@192.168.0.217 Exited with error code 1
[root@docker test]#
说明:可以看到我们过滤httpd监听的80端口命令执行状态失败,说明远程主机上没有进程监听在80端口上。
六、prsync 命令的使用
prsync命令的功能是将文件并行复制到多个主机
命令用法:
prsync [-vAraz] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t time‐out] [-O options] [-x args] [-X arg] [-S args] local remote
说明:以上选项同pssh命令选项类似。
示例:
复制文件到服务器
[root@docker test]#pssh -h iplist -i 'ls -l /root/'
[1] 01:35:19 [SUCCESS] root@192.168.0.128
总用量 4
-rw-r--r-- 1 root root 552 10月 25 05:19 fs
[2] 01:35:19 [SUCCESS] root@192.168.0.218
总用量 4
-rw-r--r--. 1 root root 552 11月 9 01:34 fs
[3] 01:35:19 [SUCCESS] root@192.168.0.217
总用量 4
-rw-r--r--. 1 root root 552 11月 9 01:35 fs
[root@docker test]#prsync -h iplist /etc/inittab /root/init/
[1] 01:35:52 [SUCCESS] root@192.168.0.128
[2] 01:35:52 [SUCCESS] root@192.168.0.218
[3] 01:35:52 [SUCCESS] root@192.168.0.217
[root@docker test]#pssh -h iplist -i 'ls -l /root/'
[1] 01:36:01 [SUCCESS] root@192.168.0.128
总用量 8
-rw-r--r-- 1 root root 552 10月 25 05:19 fs
drwxr-xr-x 2 root root 4096 10月 25 05:19 init
[2] 01:36:01 [SUCCESS] root@192.168.0.218
总用量 8
-rw-r--r--. 1 root root 552 11月 9 01:34 fs
drwxr-xr-x. 2 root root 4096 11月 9 01:35 init
[3] 01:36:01 [SUCCESS] root@192.168.0.217
总用量 4
-rw-r--r--. 1 root root 552 11月 9 01:35 fs
drwxr-xr-x. 2 root root 21 11月 9 01:35 init
[root@docker test]#
说明:prsync的用法和pscp.pssh的用法类似,它两的区别在于,pscp.pssh不支持创建目录(在远端服务器上若没有指定目录,则创建),而prsync支持。pscp.pssh 支持将本地的不同多个文件同时复制到远程服务端,而prsync 不支持。
复制目录到服务器
[root@docker test]#pssh -h iplist -i 'rm -rf /root/*'
[1] 01:45:21 [SUCCESS] root@192.168.0.128
[2] 01:45:21 [SUCCESS] root@192.168.0.218
[3] 01:45:21 [SUCCESS] root@192.168.0.217
[root@docker test]#pssh -h iplist -i 'ls -l /root/'
[1] 01:45:38 [SUCCESS] root@192.168.0.128
总用量 0
[2] 01:45:38 [SUCCESS] root@192.168.0.218
总用量 0
[3] 01:45:38 [SUCCESS] root@192.168.0.217
总用量 0
[root@docker test]#prsync -r -h iplist /root/scripts/ /root/aaa/
[1] 01:46:20 [SUCCESS] root@192.168.0.128
[2] 01:46:21 [SUCCESS] root@192.168.0.218
[3] 01:46:21 [SUCCESS] root@192.168.0.217
[root@docker test]#pssh -h iplist -i 'ls -l /root/'
[1] 01:46:42 [SUCCESS] root@192.168.0.128
总用量 4
drwxr-xr-x 2 root root 4096 10月 25 05:30 aaa
[2] 01:46:42 [SUCCESS] root@192.168.0.218
总用量 4
drwxr-xr-x. 2 root root 4096 11月 9 01:46 aaa
[3] 01:46:42 [SUCCESS] root@192.168.0.217
总用量 0
drwxr-xr-x. 2 root root 42 11月 9 01:46 aaa
[root@docker test]#
说明:传目录和pscp.pssh用法一样,需要加-r选项。
pssh系列工具的更多相关文章
- 使用autotools系列工具自动部署源代码编译安装
在Linux系统下开发一个较大的项目,完全手动建立Makefile是一件费力而又容易出错的工作.autotools系列工具只需用户输入简单的目标文件.依赖文件.文件目录等就可以比较轻松地生成Makef ...
- Caffe学习系列——工具篇:神经网络模型结构可视化
Caffe学习系列——工具篇:神经网络模型结构可视化 在Caffe中,目前有两种可视化prototxt格式网络结构的方法: 使用Netscope在线可视化 使用Caffe提供的draw_net.py ...
- 《数据分析实战:基于EXCEL和SPSS系列工具的实践》一1.4 数据分析的流程
本节书摘来华章计算机<数据分析实战:基于EXCEL和SPSS系列工具的实践>一书中的第1章 ,第1.4节,纪贺元 著 更多章节内容可以访问云栖社区"华章计算机"公众号查 ...
- [Android开发学iOS系列] 工具篇: Xcode使用和快捷键
[Android开发学iOS系列] 工具篇: Xcode使用和快捷键 工欲善其事必先利其器. 编辑 Cmd + N: 新建文件 Option + Cmd + N: 新建文件夹 Cmd + / : 注释 ...
- 微信小程序购物商城系统开发系列-工具篇
微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统.新的生态,未来大部分应用场景都将 ...
- 比較全的XML系列工具 能够轻松实现排版、转换和打印!
XML系列 --------------------------------------------------------------------------------1.Xsl Formatte ...
- pssh系列命令详解
安装 pssh提供OpenSSH和相关工具的并行版本.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.pssh是python写的可 ...
- jQuery原理系列-工具函数
jquery源码中有很多精妙的实现,对于我们每天都在使用的东西,一定要知其原理,如果遇到不能使用jquery环境,也能自己封装原生的代码实现. 1.检测类型 众所周知typeof 不能用来检测数据,会 ...
- (2)RGB-D SLAM系列- 工具篇(依赖库及编译)
做了个SLAM的小视频,有兴趣的朋友可以看下 https://youtu.be/z5wDzMZF10Q 1)Library depended 一个完整的SLAM系统包括,数据流获取,数据读取,特征提取 ...
随机推荐
- Go routine 编排框架:oklog/run 包
目录 Go routine 编排框架:oklog/run 包 问题引入 oklog/run 包介绍 使用例子 参考资料 Go routine 编排框架:oklog/run 包 问题引入 oklog/r ...
- Java描述设计模式(15):责任链模式
本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景描述 1.请假审批流程 公司常见的请假审批流程:请假天数 当 day<=3 天,项目经理审批 当 3<day<= ...
- python犯傻之题目解答思路比较与反思
1.题目: 企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: 20万 ...
- PHP key_exists
此函数同array_key_exsits(). 1.函数的作用:判断一个数组是否含有某个键值 2.函数的参数: @param string $key @param array $haystack 3 ...
- Linux power supply class(1)_软件架构及API汇整【转】
1. 前言 power supply class为编写供电设备(power supply,后面简称PSY)的驱动提供了统一的框架,功能包括: 1)抽象PSY设备的共性,向用户空间提供统一的API. 2 ...
- 【Labview入门】将输入度数转换为3位精度弧度值
Labview版本2015 程序如下: 可以右键输出控件选择属性来调整输出的小数位数: 运行结果:
- go-结构体和方法
结构体类型的字面量由关键字type.类型名称.关键字struct,以及由花括号包裹的若干字段声明组成. type Person struct { Name string Gender string A ...
- 利用电脑开启自带虚拟wifi,无需第三方工具。
注:此方法只验证win 7以上系统,XP server 2016 系统未验证 1.新建记事本,在记事本中输入netsh wlan set hostednetwork mode=allow ssid= ...
- Redis 文章一 之持久化机制的介绍
我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的 企业级redis集群架构:海量数据.高并发.高可用 持久化主要是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面去,比如你re ...
- Centos中查找文件、目录、内容
1.查找文件 find / -name 'filename' 2.查找文件夹(目录) find / -name 'path' -type d 3.查找内容 find . | xargs grep -r ...