串口、COM口、TTL、RS232、RS485

1、串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。

2、接设备的时候,一般只接GND RX TX。不会接Vcc或者+3.3v的电源线,避免与目标设备上的供电冲突。

3、PL2303、CP2102芯片都是常用的USB转TTL串口的芯片,用USB来扩展串口(TTL电平)。

4、MAX232芯片是TTL电平与RS232电平的专用双向转换芯片,可以TTL转RS-232,也可以RS-232转TTL。

5、TTL标准是低电平为0,高电平为1(+5V电平)。RS-232标准是正电平为0,负电平为1(±15V电平)。

6、RS-485的电气特性:逻辑“1”以两线间的电压差为+(2—6)V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。

    串口、COM口

    COM口即串行通讯端口,简称串口。一般我们见到的是两种物理标准。D型9针插头,和 4针杜邦头两种。下图是个USB转TTL串口的小板,可以用USB扩展出一个串口。对于使用笔记本或者没有COM的台机开发的嵌入式工程师来说就是必备工具。除了可以使用串口给MCU下载程序外,还是辅助调试程序的神器。

    RS232

上边介绍的都是USB转TTL串口,如果目标设备上是RS-232串口(D型9针接口)可咋整呀?再接一片MAX232转换一下就行,如下图。

    RS485

    在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线标准。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。RS-485接口的最大传输距离标准值为4000英尺(约1219米),实际上可达3000米,另外RS-232-C接口在总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连接多达128个收发器。

.

发表在 hardware | 串口、COM口、TTL、RS232、RS485已关闭评论

centos 7

timedatectl

timedatectl list-timezones | grep Asia
timedatectl set-timezone Asia/Shanghai

timedatectl list-timezones | grep UTC
timedatectl set-timezone UTC

; NTP
timedatectl set-ntp true
; timedatectl set-local-rtc true

systemctl status chrony
vi /etc/chrony.conf

hostname
hostnamectl --static set-hostname host-331582

vi /etc/selinux/config
echo 'SELINUX=disabled' >> /etc/selinux/config
echo '' >> /etc/selinux/config

.

发表在 linux | centos 7已关闭评论

Linux dd

一、dd命令的解释

dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2

参数注释:

1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >

2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >

3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

    obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。

    bs=bytes:同时设置读入/输出的块大小为bytes个字节。

4. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。

5. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

6. seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。

7. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

8. conv=conversion:用指定的参数转换文件。

    ascii:转换ebcdic为ascii

     ebcdic:转换ascii为ebcdic

    ibm:转换ascii为alternate ebcdic

    block:把每一行转换为长度为cbs,不足部分用空格填充

    unblock:使每一行的长度都为cbs,不足部分用空格填充

    lcase:把大写字符转换为小写字符

    ucase:把小写字符转换为大写字符

    swab:交换输入的每对字节

     noerror:出错时不停止

     notrunc:不截短输出文件

    sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

二、dd应用实例

1.将本地的/dev/hdb整盘备份到/dev/hdd

#dd if=/dev/hdb of=/dev/hdd

2./dev/hdb全盘数据备份到指定路径的image文件

#dd if=/dev/hdb of=/root/image

3.将备份文件恢复到指定盘

#dd if=/root/image of=/dev/hdb

4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径

#dd if=/dev/hdb | gzip > /root/image.gz

5.将压缩的备份文件恢复到指定盘

#gzip -dc /root/image.gz | dd of=/dev/hdb

6.备份与恢复MBR

备份磁盘开始的512个字节大小的MBR信息到指定文件:

#dd if=/dev/hda of=/root/image count=1 bs=512

   count=1指仅拷贝一个块;bs=512指块大小为512个字节。

恢复:

#dd if=/root/image of=/dev/had

将备份的MBR信息写到磁盘开始部分

7.备份软盘

#dd if=/dev/fd0 of=disk.img count=1 bs=1440k (即块大小为1.44M)

8.拷贝内存内容到硬盘

#dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k)  

9.拷贝光盘内容到指定文件夹,并保存为cd.iso文件

#dd if=/dev/cdrom(hdc) of=/root/cd.iso

10.增加swap分区文件大小

第一步:创建一个大小为256M的文件:

#dd if=/dev/zero of=/swapfile bs=1024 count=262144

第二步:把这个文件变成swap文件:

#mkswap /swapfile

第三步:启用这个swap文件:

#swapon /swapfile

第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:

/swapfile    swap    swap    default   0 0

11.销毁磁盘数据

#dd if=/dev/urandom of=/dev/hda1

注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。

12.测试硬盘的读写速度

#dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

#dd if=/root/1Gb.file bs=64k | dd of=/dev/null

通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。

13.确定硬盘的最佳块大小:

#dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

#dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file

#dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file

#dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。

14.修复硬盘:

#dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda

当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数 据起死回生。并且这个过程是安全、高效的。

15.利用netcat远程备份

#dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234

在源主机上执行此命令备份/dev/hda

#netcat -l -p 1234 | dd of=/dev/hdc bs=16065b

在目的主机上执行此命令来接收数据并写入/dev/hdc

#netcat -l -p 1234 | bzip2 > partition.img

#netcat -l -p 1234 | gzip > partition.img

以上两条指令是目的主机指令的变化分别采用bzip2、gzip对数据进行压缩,并将备份文件保存在当前目录。

16.将一个大视频文件的第i个字节的值改成0x41(大写字母AASCII值)

#echo A | dd of=bigfile seek=$i bs=1 count=1 conv=notrunc

17.建立linux虚拟盘,用文件模拟磁盘

在进行linux的实验中,如果没有多余的硬盘来做测试。则可以在linux下使用文件来模拟磁盘,以供测试目的。

其模拟过程如下所示,摘录自《Oracle数据库核心技术与实务详解-教你如何成为Oracle 10g OCP》一书。

1)以root用户创建一个ASM磁盘所在的目录。

# mkdir –p /u01/asmdisks

2)通过dd命令创建6个400M大小的文件,每个文件代表一块磁盘。

[root@book u01]

# cd asmdisks

[root@book asmdisks]

# dd if=/dev/zero of=asm_disk1 bs=1024k count=400

[root@book asmdisks]

# dd if=/dev/zero of=asm_disk2 bs=1024k count=400

[root@book asmdisks]

# dd if=/dev/zero of=asm_disk3 bs=1024k count=400

[root@book asmdisks]

# dd if=/dev/zero of=asm_disk4 bs=1024k count=400

[root@book asmdisks]

# dd if=/dev/zero of=asm_disk5 bs=1024k count=400

[root@book asmdisks]

# dd if=/dev/zero of=asm_disk6 bs=1024k count=400

3)将这些文件与裸设备关联。

[root@book asmdisks]

# chmod 777 asm_disk*

[root@book asmdisks]

# losetup /dev/loop1 asm_disk1

[root@book asmdisks]

# losetup /dev/loop2 asm_disk2

[root@book asmdisks]

# losetup /dev/loop3 asm_disk3

[root@book asmdisks]

# losetup /dev/loop4 asm_disk4

[root@book asmdisks]

# losetup /dev/loop5 asm_disk5

[root@book asmdisks]

# losetup /dev/loop6 asm_disk6

注意:如果要删除通过dd模拟出的虚拟磁盘文件的话,直接删除模拟出的磁盘文件

(也就是asm_disk1、asm_disk2…asm_disk6)还不够,还必须执行losetup -d /dev/loopN,在这里N从1到6。否则,磁盘文件所占用的磁盘空间不能释放

三、/dev/null和/dev/zero的区别

/dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!

/dev/zero,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。

/dev/null------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。

#if=/dev/zero of=./test.txt bs=1k count=1
#ls –l

total 4
-rw-r--r--    1 oracle   dba          1024 Jul 15 16:56 test.txt

#find / -name access_log  2>/dev/null

3.1使用/dev/null 

把/dev/null看作"黑洞", 它等价于一个只写文件,所有写入它的内容都会永远丢失.,而尝试从它那儿读取内容则什么也读不到。然而, /dev/null对命令行和脚本都非常的有用

禁止标准输出

#cat $filename >/dev/null

文件内容丢失,而不会输出到标准输出.

禁止标准错误

#rm $badname 2>/dev/null

这样错误信息[标准错误]就被丢到太平洋去了

禁止标准输出和标准错误的输出

#cat $filename 2>/dev/null >/dev/null

如果"filename"不存在,将不会有任何错误信息提示;如果"

filename"存在, 文件的内容不会打印到标准输出。

因此,上面的代码根本不会输出任何信息。当只想测试命令的退出码而不想有任何输出时非常有用。

#cat $filename &>/dev/null

这样其实也可以, 由 Baris Cicek 指出

自动清空日志文件的内容

Deleting contents of a file, but preserving the file itself, with all attendant permissions (from Example 2-1 and Example 2-3): 

#cat /dev/null > /var/log/messages
#  : > /var/log/messages   有同样的效果, 但不会产生新的进程.(因为:是内建的)
#cat /dev/null > /var/log/wtmp

特别适合处理这些由商业Web站点发送的讨厌的"cookies"

隐藏cookie而不再使用

#if [ -f ~/.netscape/cookies ]  # 如果存在则删除.
#then
#rm -f ~/.netscape/cookies
#fi
#ln -s /dev/null ~/.netscape/cookies

现在所有的cookies都会丢入黑洞而不会保存在磁盘上了.

3.2使用/dev/zero

像/dev/null一样, /dev/zero也是一个伪文件, 但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的)。 写入它的输出会丢失不见, 而从/dev/zero读出一连串的null也比较困难, 虽然这也能通过od或一个十六进制编辑器来做到。 /dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件

/dev/zero创建一个交换临时文件

#!/bin/bash

  # 创建一个交换文件.

  ROOT_UID=0 # Root 用户的 $UID 是 0.

  E_WRONG_USER=65 # 不是 root?

  FILE=/swap

  BLOCKSIZE=1024

  MINBLOCKS=40

  SUCCESS=0

  # 这个脚本必须用root来运行.

  if [ "UID"−ne"

ROOT_UID" ]

   then

   echo; echo "You must be root to run this script."; echo

   exit $E_WRONG_USER

  fi

  blocks={1:-

MINBLOCKS} # 如果命令行没有指定,

  #+ 则设置为默认的40块.

  # 上面这句等同如:

  # --------------------------------------------------

  # if [ -n "$1" ]

  # then

  # blocks=$1

  # else

  # blocks=$MINBLOCKS

  # fi

  # --------------------------------------------------

 if [ "blocks"−lt

MINBLOCKS ]

 then

 blocks=$MINBLOCKS # 最少要有 40 个块长.

 fi

 echo "Creating swap file of size $blocks blocks (KB)."

 dd if=/dev/zero of=FILEbs=

BLOCKSIZE count=$blocks # 把零写入文件.

 mkswap FILE

blocks # 将此文件建为交换文件(或称交换分区).

 swapon $FILE # 激活交换文件.

 echo "Swap file created and activated."

 exit $SUCCESS 

关于 /dev/zero 的另一个应用是为特定的目的而用零去填充一个指定大小的文件, 如挂载一个文件系统到环回设备 (loopback device)或"安全地" 删除一个文件

例子创建ramdisk

#!/bin/bash

 # ramdisk.sh

 # "ramdisk"是系统RAM内存的一段,

 #+ 它可以被当成是一个文件系统来操作.

 # 它的优点是存取速度非常快 (包括读和写).

 # 缺点: 易失性, 当计算机重启或关机时会丢失数据.

 #+ 会减少系统可用的RAM.

 # 10 # 那么ramdisk有什么作用呢?

 # 保存一个较大的数据集在ramdisk, 比如一张表或字典,

 #+ 这样可以加速数据查询, 因为在内存里查找比在磁盘里查找快得多.

  E_NON_ROOT_USER=70 # 必须用root来运行.

  ROOTUSER_NAME=root

  MOUNTPT=/mnt/ramdisk

  SIZE=2000 # 2K 个块 (可以合适的做修改)

  BLOCKSIZE=1024 # 每块有1K (1024 byte) 的大小

  DEVICE=/dev/ram0 # 第一个 ram 设备

  username=`id -nu`

  if [ "username"!="

ROOTUSER_NAME" ]

  then

    echo "Must be root to run \"`basename $0`\"."

    exit $E_NON_ROOT_USER

  fi

   if [ ! -d "$MOUNTPT" ] # 测试挂载点是否已经存在了,

  then #+ 如果这个脚本已经运行了好几次了就不会再建这个目录了

    mkdir $MOUNTPT #+ 因为前面已经建立了.

  fi

  dd if=/dev/zero of=DEVICEcount=

SIZE bs=$BLOCKSIZE

   # 把RAM设备的内容用零填充.                                              

   # 为何需要这么做?

  mke2fs $DEVICE # 在RAM设备上创建一个ext2文件系统.

  mount DEVICE

MOUNTPT # 挂载设备.

  chmod 777 $MOUNTPT # 使普通用户也可以存取这个ramdisk.

  # 但是, 只能由root来缷载它.

  echo "\"$MOUNTPT\" now available for use."

 # 现在 ramdisk 即使普通用户也可以用来存取文件了.

 # 注意, ramdisk是易失的, 所以当计算机系统重启或关机时ramdisk里的内容会消失.

 # 拷贝所有你想保存文件到一个常规的磁盘目录下.

 # 重启之后, 运行这个脚本再次建立起一个 ramdisk.

 # 仅重新加载 /mnt/ramdisk 而没有其他的步骤将不会正确工作.

 # 如果加以改进, 这个脚本可以放在 /etc/rc.d/rc.local,

 #+ 以使系统启动时能自动设立一个ramdisk.

 # 这样很合适速度要求高的数据库服务器.

 exit 0

Links:

https://www.cnblogs.com/jikexianfeng/p/6103500.html

发表在 linux | Linux dd已关闭评论

ec2/ecs resize2fs

If you have used a snapshot to create the EBS or with certain AMIs you will need to extend the disk (xvda), extend the partition (xvda1), then extend the filesystem (/).

If I'm reading this correctly, your disk looks like this:

/dev/xvda
|__/dev/xvda1__|______________ Free space______________|

It needs to look like this:

/dev/xvda
|______________________/dev/xvda1______________________|

After that, running resize2fs will grow into that new space within xvda1, using fdisk we can increase the block size by deleting and creating it again and making the partition bootable. all it requires is a reboot. In most cases it shouldn't effect your data if you use same start cylinder but Note that any mistake in recreating the partion will result in losing all data and/or the server will not reboot. I would recommend doing this as the first step on a newly created instance. Otherwise take a snapshot of your EC2 EBS Storage/etc.

I have marked the steps with <<#>> in the block below, so the are not a part of the command. You need root permissions, so do a "sudo sh" if you are not root.

<<1>> Look at the filesystem, it is 6G
<<2>> Look at the disk and the partition, the disk is 21.5 GB but the partition is 6 GB (6291456 blocks)
<<3>> Start fdisk for that disk (xvda, so not the partition xvda1)
<<4>> Switch to sector display.
<<5>> Print the partition(s), and remember the start sector (2048 in the example).
<<6>> Delete the partition.
<<7>> Create a new partition.
<<8>> Make it primary.
<<9>> First partition.
<<10>> Enter the old start sector, do NOT make any typo here!!! (2048 in the example) 
<<11>> Hit enter to accept the default (this is the remainder of the disk)
<<12>> Print the changes and make sure the start sector is ok, if not restart at <<6>>
<<13>> Make the partition bootable. do NOT forget this!!!
<<14>> Enter your partition number (1 in the example)
<<15>> Write the partition info back, this will end the fdisk session.
<<16>> Reboot the server, and wait for it to come up (this may take longer than usual).
<<17>> Verify the filesystem size.
<<18>> If the filesystem is not around 20Gb as expected, you can use this command.


# df -h  <<1>>

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      6.0G  2.0G  3.7G  35% / 
tmpfs            15G     0   15G   0% /dev/shm

# fdisk -l  <<2>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders
Units = cylinders of 1649 * 512 = 844288 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           2        7632     6291456   83  Linux

# fdisk /dev/xvda  <<3>>

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): u  <<4>>
Changing display/entry units to sectors

Command (m for help): p  <<5>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048    12584959     6291456   83  Linux

Command (m for help): d  <<6>>
Selected partition 1

Command (m for help): n  <<7>>
Command action
   e   extended
   p   primary partition (1-4)
p  <<8>>
Partition number (1-4): 1  <<9>>
First sector (17-41943039, default 17): 2048  <<10>>
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): <<11>>
Using default value 41943039

Command (m for help): p <<12>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1            2048    41943039    20970496   83  Linux

Command (m for help): a  <<13>>
Partition number (1-4): 1  <<14>>


Command (m for help): w  <<15>>
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: ...
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

# reboot  <<16>>



# df -h  <<17>>
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  2.0G   17G  11% / 
tmpfs            15G     0   15G   0% /dev/shm

# resize2fs /dev/xvda1  <<18>>
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/xvda1 to 5242624 (4k) blocks.
The filesystem on /dev/xvda1 is now 5242624 blocks long.

root@vs120 [~]#  df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  7.8G   11G  42% /
tmpfs           498M     0  498M   0% /dev/shm
/usr/tmpDSK     399M   11M  368M   3% /tmp
root@vs120 [~]#
# xfs
xfs_growfs /dev/xvda1

Use the lsblk command to list the block devices attached to your instance. The example below shows three volumes: /dev/xvda, /dev/xvdb, and /dev/xvdf.

[ec2-user ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  30G  0 disk
└─xvda1 202:1    0  30G  0 part /
xvdb    202:16   0  30G  0 disk /mnt
xvdf    202:80   0  35G  0 disk
└─xvdf1 202:81   0   8G  0 part

links:

https://serverfault.com/questions/414983/ec2-drive-not-ebs-volume-size

https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

.

发表在 linux | ec2/ecs resize2fs已关闭评论

openldap acl

1、语法语法
access to what:
by who access control

其中,access to指示启用访问控制,上句大致可以理解为:
access to <对什么目标进行控制>[by <作用于哪些访问者> <授予什么样的访问权限><采取什么样的匹配控制动作>]+

2、控制目标 what
这一域主要是实现对ACL应用对象的指定,对象可以是记录和属性。选择ACL目标记录的方法一般有两种:DN和filter,语法为:what ::= * | [dn[.basic-style]=regex | dn.scope-style=DN] [filter=ldapfilter] [attrs=]

2.1 指定所有的记录如下:
access to *

2.2 通过DN指定语法如下:
1)、access to dn.(regex|exact)=regex
第一种方法是使用正则表达式(dn.regex)或精确匹配(dn.style)的方式来匹配符合条件的记录(这个好像不像想象的那么简单,实现起来颇为费脑筋),例如:
access to dn="^.,uid=([^,]+),ou=users,(.)$"

2)、access to dn.(base|one|subtree|children)=DN("ou=People,dc=koudai,dc=com")
第二种方法通过“区域”选择的方法进行目标记录的选取,对以指定的DN开始的目录树区域进行目标记录匹配。匹配区域的方式共有四种: 
base 只匹配DN本身一条记录 
one 匹配以给定DN为父目录的所有记录 
subtree 匹配以给定DN为根目录的所有子树内的记录 
children 匹配给定DN下的所有记录,但应该不包括以DN直接命名的那条记录(参见例子的解释)

2.3 通过filter指定过滤规则进行记录过虑,语法如下:
access to filter=ldap filter
其中filter指定的为search的过滤规则,这类同于linux系统中grep的匹配方式。如:

access to filter=(objectClass=sambaSamAccount)
也可以结合使用DN和filter进行记录的匹配,例如:
access to dn.subtree=”ou=users,dc=mydomain,dc=org” filter=(objectClass=posixAccount)

2.4 通过attrs选取匹配记录语法:
access to attrs=uid,uidNumber,gidNumber
也可以结合使用DN和attrs进行记录的匹配,例如:

access to dn.subtree="ou=users,dc=mydomain,dc=org" attrs=uid

3、被用来授权的访问者的指定who
指定被授权的用户范围的方法大致有以下几种:

* 所有的访问者,包括匿名的用户 
anonymous 非认证的匿名用户 
users 认证的用户 
self 目标记录的用户自身 
dn[.<basic-style>]=<regex> 在指定目录内匹配正则表达式的用户 
dn.<scope-style>=<DN> 指定DN内的用户

4、被授予的权限access
当选取好ACL作用的目标记录并选取好用户范围后,就该给这些用户授予他们应该得到的权限了。大致的权限(由低到高)有以下几类:

none 无权限,即拒绝访问 
auth 访问bind(认证)设置的权限;前提是需要用户提交一个DN形式的用户名并能通过认证 
compare 比较属性的权限;(例如:对照查看某用户的telephoneNumber值是不是158 8888 8888),但并不具有搜索的权限 
search 利用过虑条件进行搜索的权限,但这并不一定具有可读取搜索结果的权限 
read 读取搜索结果的权限 
write 更改记录属性值的权限

5、采取什么样的匹配控制动作control
在进行记录的匹配时,如果有多条规则存在,那么在第一次匹配产生后是否还进行后续的匹配或采取其它的动作将取决于此项的设置;控制方式共有以下三种:

stop 这个是默认值,这表示在一次匹配产生后将不再进行下一个匹配,所有后续的匹配将会停止。 
continue 无论匹配是否已经发生,继续进行直到所有的规则全部进行完匹配检查 
break 一个匹配发生后,跳出当前的子句进行后一个子句的检查

links:

http://www.openldap.org/doc/admin24/access-control.html

发表在 linux | openldap acl已关闭评论

用户、组和容器的 LDAP 过滤器和属性案例

摘自: https://docs.oracle.com/html/E35191_01/ldap-filters-attrs-users.html

C.2. 用户、组和容器的 LDAP 过滤器和属性

C.2.1. 用户、组和容器的默认 LDAP 过滤器和属性
C.2.2. 用户、组和容器的 Active Directory 设置
C.2.3. 用户、组和容器的 Oracle Directory Server Enterprise Edition 设置
C.2.4. 用户、组和容器的 OpenDS 设置
C.2.5. 用户、组和容器的 OpenLDAP 设置
C.2.6. 用户、组和容器的 Novell eDirectory 设置

Oracle VDI Manager 名称 CLI 属性名称 说明
用户过滤器 ldap.user.object.filter 用于标识用户类型对象的 LDAP 过滤器。
用户搜索过滤器 ldap.user.search.filter 用于根据搜索条件搜索用户的 LDAP 过滤器。可以使用 user-search 命令或在 Oracle VDI Manager 中完成用户搜索。$SEARCH_STRING 是搜索条件的占位符。
用户 ID 属性 ldap.userid.attributes 以逗号分隔的 LDAP 属性列表,其中存储用户对象的用户 ID 值。用于在给定用户 ID 的情况下查找用户。
用户成员属性 ldap.user.member.attributes 某一用户对象的以逗号分隔的 LDAP 属性列表,其中存储该用户所属的组。
用户短属性 ldap.user.short.attributes 某一用户对象可在组成员属性中使用的 LDAP 属性的逗号分隔列表。
组过滤器 ldap.group.object.filter 用于标识组类型对象的 LDAP 过滤器。
组搜索过滤器 ldap.group.search.filter 用于根据搜索条件搜索组的 LDAP 过滤器。可以使用 user-search 命令或者在 Oracle VDI Manager 中执行对组的搜索。$SEARCH_STRING 是搜索条件的占位符。
组成员属性 ldap.group.member.attributes 某一组对象的以逗号分隔的 LDAP 属性列表,其中存储该组的用户成员。
组短属性 ldap.group.short.attributes 可以在用户成员属性中使用的组对象上的 LDAP 属性的逗号分隔列表。此属性通常用于特定于 Active Directory 的主要组成员关系。
容器对象过滤器 ldap.container.object.filter 用于标识容器类型对象的 LDAP 过滤器。在 Oracle VDI Manager 中,可将容器选作定制组过滤器的根。
容器搜索过滤器 ldap.container.search.filter 在为定制组过滤器选择根时,Oracle VDI Manager 用来根据搜索条件搜索容器的 LDAP 过滤器。$SEARCH_STRING 是搜索条件的占位符。
默认属性 ldap.default.attributes 查找对象时在高速缓存中加载的以逗号分隔的 LDAP 属性的列表。其中应包含其他过滤器和属性列表中使用的所有属性。

C.2.1. 用户、组和容器的默认 LDAP 过滤器和属性

下表包含用户、组和容器的默认 LDAP 过滤器和属性。

Oracle VDI Manager 名称 默认值
用户过滤器 (&(|(objectclass=user)(objectclass=person)(objectclass=inetOrgPerson) (objectclass=organizationalPerson))(!(objectclass=computer)))
用户搜索过滤器 (|(cn=$SEARCH_STRING)(uid=$SEARCH_STRING) (userPrincipalName=$SEARCH_STRING)(mail=$SEARCH_STRING))
用户 ID 属性 uid,sAMAccountName,userPrincipalName,mail
用户成员属性 memberof,primaryGroupID
用户短属性
组过滤器 (|(objectclass=group)(objectclass=groupofnames) (objectclass=groupofuniquenames))
组搜索过滤器 (|(dc=$SEARCH_STRING)(o=$SEARCH_STRING)(ou=$SEARCH_STRING) (cn=$SEARCH_STRING)(uid=$SEARCH_STRING)(mail=$SEARCH_STRING))
组成员属性 member,uniquemember
组短属性 primaryGroupToken
容器对象过滤器 (|(objectclass=domain)(objectclass=organization) (objectclass=organizationalUnit)(objectclass=container))
容器搜索过滤器 (|(cn=$SEARCH_STRING)(dc=$SEARCH_STRING)(ou=$SEARCH_STRING))
默认属性 dc,o,ou,cn,uid,mail,member,uniquemember,memberof,sAMAccountName, primaryGroupToken,primaryGroupID

C.2.2. 用户、组和容器的 Active Directory 设置

下表包含用户、组和容器的 Active Directory 的建议设置。

如果您对用户标识使用 userPrincipalName 属性或 mail 属性,请在以下设置中使用此属性而不是 sAMAccountName

Oracle VDI Manager 名称 建议设置
用户过滤器 (&(objectclass=user)(!(objectclass=computer)))
用户搜索过滤器 (|(cn=$SEARCH_STRING)(sAMAccountName=$SEARCH_STRING))
用户 ID 属性 sAMAccountName
用户成员属性 memberof,primaryGroupID
用户短属性
组过滤器 (objectclass=group)
组搜索过滤器 (cn=$SEARCH_STRING)
组成员属性 member
组短属性 primaryGroupToken
容器对象过滤器 (objectclass=container)
容器搜索过滤器 (cn=$SEARCH_STRING)
默认属性 cn,member,memberof,sAMAccountName,primaryGroupToken,primaryGroupID

C.2.3. 用户、组和容器的 Oracle Directory Server Enterprise Edition 设置

下表包含用户、组和容器的 Oracle Directory Server Enterprise Edition 的建议设置。

Oracle VDI Manager 名称 建议设置
用户过滤器 (objectclass=person)
用户搜索过滤器 (|(cn=$SEARCH_STRING)(uid=$SEARCH_STRING))
用户 ID 属性 uid
用户成员属性 memberof
用户短属性
组过滤器 (objectclass=groupofuniquenames)
组搜索过滤器 (cn=$SEARCH_STRING)
组成员属性 uniquemember
组短属性
容器对象过滤器 (|(objectclass=domain)(objectclass=organizationalUnit))
容器搜索过滤器 (|(dc=$SEARCH_STRING)(ou=$SEARCH_STRING))
默认属性 dc,ou,cn,uid,uniquemember,memberof

C.2.4. 用户、组和容器的 OpenDS 设置

下表包含用户、组和容器的 OpenDS 的建议设置。

Oracle VDI Manager 名称 建议设置
用户过滤器 (objectclass=person)
用户搜索过滤器 (|(cn=$SEARCH_STRING)(uid=$SEARCH_STRING))
用户 ID 属性 uid
用户成员属性 memberof
用户短属性
组过滤器 (objectclass=groupofuniquenames)
组搜索过滤器 (cn=$SEARCH_STRING)
组成员属性 uniquemember
组短属性
容器对象过滤器 (|(objectclass=domain)(objectclass=organizationalUnit))
容器搜索过滤器 (|(dc=$SEARCH_STRING)(ou=$SEARCH_STRING))
默认属性 dc,ou,cn,uid,uniquemember,memberof

C.2.5. 用户、组和容器的 OpenLDAP 设置

下表包含用户、组和容器的 OpenLDAP 的建议设置。

Oracle VDI Manager 名称 建议设置
用户过滤器 从默认过滤器中删除 (!(objectclass=computer))。改用 (objectclass=person)
用户搜索过滤器 (|(cn=$SEARCH_STRING)(uid=$SEARCH_STRING))
用户 ID 属性 uid
用户成员属性 memberof
用户短属性
组过滤器 (objectclass=groupofnames)
组搜索过滤器 (cn=$SEARCH_STRING)
组成员属性 member
组短属性
容器对象过滤器
容器搜索过滤器
默认属性 cn,uid,member,memberof

C.2.6. 用户、组和容器的 Novell eDirectory 设置

下表包含用户、组和容器的 Active Directory 的建议设置。

Oracle VDI Manager 名称 建议设置
用户过滤器 您必须从默认过滤器中删除 (!(objectclass=computer))。建议设置为 (objectclass=person)
用户搜索过滤器 (|(cn=$SEARCH_STRING)(uid=$SEARCH_STRING)(givenName=$SEARCH_STRING))
用户 ID 属性 givenName,cn,uid
用户成员属性 groupMembership
用户短属性
组过滤器 (|(objectclass=group)(objectclass=groupofnames)(objectclass=groupofuniquenames))
组搜索过滤器
组成员属性 member,uniquemember
组短属性
容器对象过滤器 (objectclass=organizationalUnit)
容器搜索过滤器
默认属性 cn,uid,givenName,groupmembership,member,uniquemember
发表在 article | 用户、组和容器的 LDAP 过滤器和属性案例已关闭评论

Apache Bench (ab)

yum install -y httpd-tools

ab -c 10 -n 100 http://www.example.com/index.php

-c10 表示并发用户数为10
-n100 表示请求总数为100

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.199.85 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software:
Server Hostname: 192.168.199.85
Server Port: 3814

Document Path: /portals/index
Document Length: 11999 bytes HTTP响应数据的正文长度

Concurrency Level: 200
Time taken for tests: 2.132 seconds 所有这些请求处理完成所花费的时间 
Complete requests: 1000 完成请求数 
Failed requests: 0 失败请求数 
Write errors: 0
Total transferred: 12136000 bytes 网络总传输量 
HTML transferred: 11999000 bytes HTML内容传输量
Requests per second: 469.10 #/sec 吞吐量-每秒请求数
Time per request: 426.350 ms 服务器收到请求,响应页面要花费的时间
Time per request: 2.132 [ms] (mean, across all concurrent requests) 并发的每个请求平均消耗时间
Transfer rate: 5559.55 [Kbytes/sec] received 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 26 136.7 1 1006
Processing: 6 364 295.5 297 1741
Waiting: 3 353 297.1 286 1740
Total: 7 391 330.3 308 1980


Percentage of the requests served within a certain time (ms)
50% 308 50% 的用户响应时间小于 308 毫秒 
66% 450 80 % 的用户响应时间小于 450 毫秒
75% 552
80% 618
90% 832
95% 1028
98% 1354
99% 1650
100% 1980 (longest request) 最大的响应时间小于 2000 毫秒 

links:
http://httpd.apache.org/docs/2.4/programs/ab.html

发表在 article | Apache Bench (ab)已关闭评论

Top-Level Domain (TLD)

Generic Top-level Domains (gTLDs)

Generic top-level domains are the common domain names you're likely most familiar with. These are open for anyone to register domain names under:

  • .com (commercial)
  • .org (organization)
  • .net (network)
  • .name (name)
  • .biz (business)
  • .info (information)

Additional gTLDs are available that are called sponsored top-level domains, and are considered restricted because certain guidelines must be met before they can be registered:

  • .int (international): Used by international organizations for treaty-related purposes, and requires a United Nations registration number
  • .edu (education): Limited to educational institutions only
  • .gov (government): Limited to U.S. governmental entities only
  • .mil (military):  Limited to the U.S. military only
  • .jobs (employment): Must be registered under the legal name of a company or organization
  • .mobi (mobile): Might have to adhere to mobile-compatible guidelines
  • .tel (Telnic): Limited to hosting related to contact information, not websites

Country Code Top-level Domains (ccTLD)

Countries and territories have a top-level domain name available that's based on the country's two-letter ISO code. Here are some examples of popular country code top-level domains:

  • .us: United States
  • .ca: Canada
  • .nl: Netherlands
  • .de: Germany
  • .fr: France
  • .ch: Switzerland
  • .cn: China
  • .in: India
  • .ru: Russia
  • .mx: Mexico
  • .jp: Japan
  • .br: Brazil

The official, exhaustive list of every generic top-level domain and country code top-level domain is listed by the Internet Assigned Numbers Authority (IANA).

CodeCountry name (using title case)YearccTLDISO 3166-2
ADAndorra1974.adISO 3166-2:AD
AEUnited Arab Emirates1974.aeISO 3166-2:AE
AFAfghanistan1974.afISO 3166-2:AF
AGAntigua and Barbuda1974.agISO 3166-2:AG
AIAnguilla1985.aiISO 3166-2:AI
ALAlbania1974.alISO 3166-2:AL
AMArmenia1992.amISO 3166-2:AM
AOAngola1974.aoISO 3166-2:AO
AQAntarctica1974.aqISO 3166-2:AQ
ARArgentina1974.arISO 3166-2:AR
ASAmerican Samoa1974.asISO 3166-2:AS
ATAustria1974.atISO 3166-2:AT
AUAustralia1974.auISO 3166-2:AU
AWAruba1986.awISO 3166-2:AW
AXÅland Islands2004.axISO 3166-2:AX
AZAzerbaijan1992.azISO 3166-2:AZ
BABosnia and Herzegovina1992.baISO 3166-2:BA
BBBarbados1974.bbISO 3166-2:BB
BDBangladesh1974.bdISO 3166-2:BD
BEBelgium1974.beISO 3166-2:BE
BFBurkina Faso1984.bfISO 3166-2:BF
BGBulgaria1974.bgISO 3166-2:BG
BHBahrain1974.bhISO 3166-2:BH
BIBurundi1974.biISO 3166-2:BI
BJBenin1977.bjISO 3166-2:BJ
BLSaint Barthélemy2007.blISO 3166-2:BL
BMBermuda1974.bmISO 3166-2:BM
BNBrunei Darussalam1974.bnISO 3166-2:BN
BOBolivia (Plurinational State of)1974.boISO 3166-2:BO
BQBonaire, Sint Eustatius and Saba2010.bqISO 3166-2:BQ
BRBrazil1974.brISO 3166-2:BR
BSBahamas1974.bsISO 3166-2:BS
BTBhutan1974.btISO 3166-2:BT
BVBouvet Island1974.bvISO 3166-2:BV
BWBotswana1974.bwISO 3166-2:BW
BYBelarus1974.byISO 3166-2:BY
BZBelize1974.bzISO 3166-2:BZ
CACanada1974.caISO 3166-2:CA
CCCocos (Keeling) Islands1974.ccISO 3166-2:CC
CDCongo, Democratic Republic of the1997.cdISO 3166-2:CD
CFCentral African Republic1974.cfISO 3166-2:CF
CGCongo1974.cgISO 3166-2:CG
CHSwitzerland1974.chISO 3166-2:CH
CICôte d'Ivoire1974.ciISO 3166-2:CI
CKCook Islands1974.ckISO 3166-2:CK
CLChile1974.clISO 3166-2:CL
CMCameroon1974.cmISO 3166-2:CM
CNChina1974.cnISO 3166-2:CN
COColombia1974.coISO 3166-2:CO
CRCosta Rica1974.crISO 3166-2:CR
CUCuba1974.cuISO 3166-2:CU
CVCabo Verde1974.cvISO 3166-2:CV
CWCuraçao2010.cwISO 3166-2:CW
CXChristmas Island1974.cxISO 3166-2:CX
CYCyprus1974.cyISO 3166-2:CY
CZCzechia1993.czISO 3166-2:CZ
DEGermany1974.deISO 3166-2:DE
DJDjibouti1977.djISO 3166-2:DJ
DKDenmark1974.dkISO 3166-2:DK
DMDominica1974.dmISO 3166-2:DM
DODominican Republic1974.doISO 3166-2:DO
DZAlgeria1974.dzISO 3166-2:DZ
ECEcuador1974.ecISO 3166-2:EC
EEEstonia1992.eeISO 3166-2:EE
EGEgypt1974.egISO 3166-2:EG
EHWestern Sahara1974ISO 3166-2:EH
EREritrea1993.erISO 3166-2:ER
ESSpain1974.esISO 3166-2:ES
ETEthiopia1974.etISO 3166-2:ET
FIFinland1974.fiISO 3166-2:FI
FJFiji1974.fjISO 3166-2:FJ
FKFalkland Islands (Malvinas)1974.fkISO 3166-2:FK
FMMicronesia (Federated States of)1986.fmISO 3166-2:FM
FOFaroe Islands1974.foISO 3166-2:FO
FRFrance1974.frISO 3166-2:FR
GAGabon1974.gaISO 3166-2:GA
GBUnited Kingdom of Great Britain and Northern Ireland1974.gbISO 3166-2:GB
(.uk)
GDGrenada1974.gdISO 3166-2:GD
GEGeorgia1992.geISO 3166-2:GE
GFFrench Guiana1974.gfISO 3166-2:GF
GGGuernsey2006.ggISO 3166-2:GG
GHGhana1974.ghISO 3166-2:GH
GIGibraltar1974.giISO 3166-2:GI
GLGreenland1974.glISO 3166-2:GL
GMGambia1974.gmISO 3166-2:GM
GNGuinea1974.gnISO 3166-2:GN
GPGuadeloupe1974.gpISO 3166-2:GP
GQEquatorial Guinea1974.gqISO 3166-2:GQ
GRGreece1974.grISO 3166-2:GR
GSSouth Georgia and the South Sandwich Islands1993.gsISO 3166-2:GS
GTGuatemala1974.gtISO 3166-2:GT
GUGuam1974.guISO 3166-2:GU
GWGuinea-Bissau1974.gwISO 3166-2:GW
GYGuyana1974.gyISO 3166-2:GY
HKHong Kong1974.hkISO 3166-2:HK
HMHeard Island and McDonald Islands1974.hmISO 3166-2:HM
HNHonduras1974.hnISO 3166-2:HN
HRCroatia1992.hrISO 3166-2:HR
HTHaiti1974.htISO 3166-2:HT
HUHungary1974.huISO 3166-2:HU
IDIndonesia1974.idISO 3166-2:ID
IEIreland1974.ieISO 3166-2:IE
ILIsrael1974.ilISO 3166-2:IL
IMIsle of Man2006.imISO 3166-2:IM
INIndia1974.inISO 3166-2:IN
IOBritish Indian Ocean Territory1974.ioISO 3166-2:IO
IQIraq1974.iqISO 3166-2:IQ
IRIran (Islamic Republic of)1974.irISO 3166-2:IR
ISIceland1974.isISO 3166-2:IS
ITItaly1974.itISO 3166-2:IT
JEJersey2006.jeISO 3166-2:JE
JMJamaica1974.jmISO 3166-2:JM
JOJordan1974.joISO 3166-2:JO
JPJapan1974.jpISO 3166-2:JP
KEKenya1974.keISO 3166-2:KE
KGKyrgyzstan1992.kgISO 3166-2:KG
KHCambodia1974.khISO 3166-2:KH
KIKiribati1979.kiISO 3166-2:KI
KMComoros1974.kmISO 3166-2:KM
KNSaint Kitts and Nevis1974.knISO 3166-2:KN
KPKorea (Democratic People's Republic of)1974.kpISO 3166-2:KP
KRKorea, Republic of1974.krISO 3166-2:KR
KWKuwait1974.kwISO 3166-2:KW
KYCayman Islands1974.kyISO 3166-2:KY
KZKazakhstan1992.kzISO 3166-2:KZ
LALao People's Democratic Republic1974.laISO 3166-2:LA
LBLebanon1974.lbISO 3166-2:LB
LCSaint Lucia1974.lcISO 3166-2:LC
LILiechtenstein1974.liISO 3166-2:LI
LKSri Lanka1974.lkISO 3166-2:LK
LRLiberia1974.lrISO 3166-2:LR
LSLesotho1974.lsISO 3166-2:LS
LTLithuania1992.ltISO 3166-2:LT
LULuxembourg1974.luISO 3166-2:LU
LVLatvia1992.lvISO 3166-2:LV
LYLibya1974.lyISO 3166-2:LY
MAMorocco1974.maISO 3166-2:MA
MCMonaco1974.mcISO 3166-2:MC
MDMoldova, Republic of1992.mdISO 3166-2:MD
MEMontenegro2006.meISO 3166-2:ME
MFSaint Martin (French part)2007.mfISO 3166-2:MF
MGMadagascar1974.mgISO 3166-2:MG
MHMarshall Islands1986.mhISO 3166-2:MH
MKNorth Macedonia1993.mkISO 3166-2:MK
MLMali1974.mlISO 3166-2:ML
MMMyanmar1989.mmISO 3166-2:MM
MNMongolia1974.mnISO 3166-2:MN
MOMacao1974.moISO 3166-2:MO
MPNorthern Mariana Islands1986.mpISO 3166-2:MP
MQMartinique1974.mqISO 3166-2:MQ
MRMauritania1974.mrISO 3166-2:MR
MSMontserrat1974.msISO 3166-2:MS
MTMalta1974.mtISO 3166-2:MT
MUMauritius1974.muISO 3166-2:MU
MVMaldives1974.mvISO 3166-2:MV
MWMalawi1974.mwISO 3166-2:MW
MXMexico1974.mxISO 3166-2:MX
MYMalaysia1974.myISO 3166-2:MY
MZMozambique1974.mzISO 3166-2:MZ
NANamibia1974.naISO 3166-2:NA
NCNew Caledonia1974.ncISO 3166-2:NC
NENiger1974.neISO 3166-2:NE
NFNorfolk Island1974.nfISO 3166-2:NF
NGNigeria1974.ngISO 3166-2:NG
NINicaragua1974.niISO 3166-2:NI
NLNetherlands1974.nlISO 3166-2:NL
NONorway1974.noISO 3166-2:NO
NPNepal1974.npISO 3166-2:NP
NRNauru1974.nrISO 3166-2:NR
NUNiue1974.nuISO 3166-2:NU
NZNew Zealand1974.nzISO 3166-2:NZ
OMOman1974.omISO 3166-2:OM
PAPanama1974.paISO 3166-2:PA
PEPeru1974.peISO 3166-2:PE
PFFrench Polynesia1974.pfISO 3166-2:PF
PGPapua New Guinea1974.pgISO 3166-2:PG
PHPhilippines1974.phISO 3166-2:PH
PKPakistan1974.pkISO 3166-2:PK
PLPoland1974.plISO 3166-2:PL
PMSaint Pierre and Miquelon1974.pmISO 3166-2:PM
PNPitcairn1974.pnISO 3166-2:PN
PRPuerto Rico1974.prISO 3166-2:PR
PSPalestine, State of1999.psISO 3166-2:PS
PTPortugal1974.ptISO 3166-2:PT
PWPalau1986.pwISO 3166-2:PW
PYParaguay1974.pyISO 3166-2:PY
QAQatar1974.qaISO 3166-2:QA
RERéunion1974.reISO 3166-2:RE
RORomania1974.roISO 3166-2:RO
RSSerbia2006.rsISO 3166-2:RS
RURussian Federation1992.ruISO 3166-2:RU
RWRwanda1974.rwISO 3166-2:RW
SASaudi Arabia1974.saISO 3166-2:SA
SBSolomon Islands1974.sbISO 3166-2:SB
SCSeychelles1974.scISO 3166-2:SC
SDSudan1974.sdISO 3166-2:SD
SESweden1974.seISO 3166-2:SE
SGSingapore1974.sgISO 3166-2:SG
SHSaint Helena, Ascension and Tristan da Cunha1974.shISO 3166-2:SH
SISlovenia1992.siISO 3166-2:SI
SJSvalbard and Jan Mayen1974.sjISO 3166-2:SJ
SKSlovakia1993.skISO 3166-2:SK
SLSierra Leone1974.slISO 3166-2:SL
SMSan Marino1974.smISO 3166-2:SM
SNSenegal1974.snISO 3166-2:SN
SOSomalia1974.soISO 3166-2:SO
SRSuriname1974.srISO 3166-2:SR
SSSouth Sudan2011.ssISO 3166-2:SS
STSao Tome and Principe1974.stISO 3166-2:ST
SVEl Salvador1974.svISO 3166-2:SV
SXSint Maarten (Dutch part)2010.sxISO 3166-2:SX
SYSyrian Arab Republic1974.syISO 3166-2:SY
SZEswatini1974.szISO 3166-2:SZ
TCTurks and Caicos Islands1974.tcISO 3166-2:TC
TDChad1974.tdISO 3166-2:TD
TFFrench Southern Territories1979.tfISO 3166-2:TF
TGTogo1974.tgISO 3166-2:TG
THThailand1974.thISO 3166-2:TH
TJTajikistan1992.tjISO 3166-2:TJ
TKTokelau1974.tkISO 3166-2:TK
TLTimor-Leste2002.tlISO 3166-2:TL
TMTurkmenistan1992.tmISO 3166-2:TM
TNTunisia1974.tnISO 3166-2:TN
TOTonga1974.toISO 3166-2:TO
TRTurkey1974.trISO 3166-2:TR
TTTrinidad and Tobago1974.ttISO 3166-2:TT
TVTuvalu1977.tvISO 3166-2:TV
TWTaiwan, Province of China1974.twISO 3166-2:TW
TZTanzania, United Republic of1974.tzISO 3166-2:TZ
UAUkraine1974.uaISO 3166-2:UA
UGUganda1974.ugISO 3166-2:UG
UMUnited States Minor Outlying Islands1986ISO 3166-2:UM
USUnited States of America1974.usISO 3166-2:US
UYUruguay1974.uyISO 3166-2:UY
UZUzbekistan1992.uzISO 3166-2:UZ
VAHoly See1974.vaISO 3166-2:VA
VCSaint Vincent and the Grenadines1974.vcISO 3166-2:VC
VEVenezuela (Bolivarian Republic of)1974.veISO 3166-2:VE
VGVirgin Islands (British)1974.vgISO 3166-2:VG
VIVirgin Islands (U.S.)1974.viISO 3166-2:VI
VNViet Nam1974.vnISO 3166-2:VN
VUVanuatu1980.vuISO 3166-2:VU
WFWallis and Futuna1974.wfISO 3166-2:WF
WSSamoa1974.wsISO 3166-2:WS
YEYemen1974.yeISO 3166-2:YE
YTMayotte1993.ytISO 3166-2:YT
ZASouth Africa1974.zaISO 3166-2:ZA
ZMZambia1974.zmISO 3166-2:ZM
ZWZimbabwe1980.zwISO 3166-2:ZW


.

发表在 article | Top-Level Domain (TLD)已关闭评论

希腊字母简表

.

序号大写小写英语音标注音英文汉语名称常用指代意义
1Αα/'ælfə/alpha阿尔法角度、系数、角加速度、第一个、电离度、转化率
2Ββ/'bi:tə/ 或 /'beɪtə/ beta贝塔 磁通系数、角度、系数
3Γγ/'gæmə/gamma伽玛 电导系数、角度、比热容比
4Δδ/'deltə/delta得尔塔 变化量、焓变、熵变、屈光度、一元二次方程中的判别式、化学位移
5Εε/'epsɪlɒn/epsilon艾普西隆对数之基数、介电常数、电容率、应变
6Ζζ/'zi:tə/zeta泽塔系数、方位角、阻抗、相对黏度
7Ηη/'i:tə/eta伊塔 迟滞系数、机械效率
8Θθ/'θi:tə/theta西塔温度、角度
9Ιι/aɪ'əʊtə/iota约(yāo)塔微小、一点
10Κκ/'kæpə/kappa卡帕介质常数、绝热指数
11λ/'læmdə/lambda拉姆达波长、体积、导热系数 普朗克常数
12Μμ/mju:/mu磁导率、微、动摩擦系(因)数、流体动力黏度、货币单位,莫比乌斯函数
13Νν/nju:/nu磁阻系数、流体运动粘度、光波频率、化学计量数
14Ξξ希腊 /ksi/ 英美 /ˈzaɪ/ 或 /ˈsaɪ/ xi克西 随机变量、(小)区间内的一个未知特定值
15Οο/əuˈmaikrən/ 或 /ˈɑmɪˌkrɑn/ omicron奥米克戎高阶无穷小函数
16π/paɪ/pi圆周率、π(n)表示不大于n的质数个数、连乘
17Ρρ/rəʊ/rho电阻率、柱坐标和极坐标中的极径、密度、曲率半径
18σ,ς/'sɪɡmə/sigma西格马总和、表面密度、跨导、应力、电导率
19Ττ/tɔ:/ 或 /taʊ/ tau时间常数、切应力、2π(两倍圆周率)
20Υυ/ˈipsɪlon/ 或 /ˈʌpsɪlɒn/ upsilon阿普西龙位移
21Φφ/faɪ/phi磁通量、电通量、角、透镜焦度、热流量、电势、直径、欧拉函数
22Χχ/kaɪ/chi统计学中有卡方(χ^2)分布
23Ψ ψ/ps/psi普西角速、介质电通量、ψ函数、磁链
24Ωω/'əʊmɪɡə/ 或 /oʊ'meɡə/ omega奥米伽/欧米伽 欧姆、角速度、角频率、交流电的电角度、化学中的质量分数、不饱和度

.

发表在 article | 希腊字母简表已关闭评论

Linux SMART 硬盘检测

SMART(Self-Monitoring, Analysis, and Reporting Technology)是一种普及度比较高的磁盘分析检测工具,磁盘运行过程中,该工具搜集磁盘的状态参数,如型号、容量、温度、密度、扇区、寻道时间、传输、误码率等。可以做到动态检测磁盘状态,当某些参数达到阈值时,会警示磁盘故障。

SMART包括2个工具,守护进程smartd和应用程序smartctl。守护进程用来检测、监控、分析、上报磁盘信息,有对应的配置维护。smartctl用以检查磁盘的运行状态信息。

下面简单列举smartctrl的常用用法:

smartctl -a #检查是否启用smart
smartctl -s on #启用smart
smartctl -H #检查磁盘健康状况
smartctl -A #查看硬盘的详细信息
smartctl -t long #后台检测,消耗时间长
smartctl -t short #后台检测,消耗时间短
smartctl -C -t #前台检测硬盘,CPU、内存消耗
smartctl -X #中断后台检测硬盘
smartctl -l selftest #显示硬盘检测日志
smartctl -l error #显示硬盘错误汇总

一般会在守护进程smartd中配置一些高级功能,比如,定时检测、分析汇总、上报等。可以编辑smartd.conf进行配置。

常用的配置项:

邮件告警
/dev/sda -a -m admin@example.com,root@localhost #监控磁盘的所有属性,出现 Failure,邮件通知
/dev/sda -H -m admin@example.com,root@localhost #监控磁盘的健康状态,出现 Failure,邮件通知
/dev/sdb -m admin@example.com -M test #启用时,发送test消息

定时检测
/dev/sde -d hpt,1/1 -a -s S/../.././01 #每天1:00-2:00 am,进行短自检
/dev/sde -d hpt,1/2 -a -s S/../.././02 #每天2:00-3:00 am,进行短自检
/dev/sde -d hpt,1/3 -a -s S/../.././03 #每天3:00-4:00 am,进行短自检
/dev/sde -d hpt,1/4/1 -a -s L/../../7/00 #每周日00:00-01:00 am,进行长自检
/dev/sde -d hpt,1/4/2 -a -s L/../../7/02 #每周日02+00-03:00 am,进行长自检

【参考】
http://smartmontools.sourceforge.net/man/smartd.conf.5.html


发表在 linux | Linux SMART 硬盘检测已关闭评论

linux 压缩/解压 compress/uncompress

tar

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思

# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思

压缩

tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg 

tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

 tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux

zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

解压

tar -xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2   //解压 tar.bz2

tar -xZvf file.tar.Z   //解压tar.Z

unrar e file.rar //解压rar

unzip file.zip //解压zip

总结

1、*.tar 用 tar -xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、*.tar.gz和*.tgz 用 tar -xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar -xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar -xZf 解压

8、*.rar 用 unrar e解压

9、*.zip 用 unzip 解压

发表在 linux | 标签为 , | linux 压缩/解压 compress/uncompress已关闭评论

CNAME Flattening

最近搞 DNS,在云闪(人家正式的名字叫 Cloudflare 魂淡)看到一个叫 CNAME Flatten 的功能。新鲜,没见过。一查不得了,中文资料近乎没有,这搞毛啊。我就占个坑解释下这东西是啥。

解决的问题:

  1. A 记录只能指向单个 IP。无法有效利用已有的 CDN 网络。比方说,Google有这么多服务器,你加 A 记录的话只能指向某一个 IP,其他的服务器永远访问不到,多尴尬(用 CNAME 可解)
  2. 可惜,CNAME 记录不能应用于根域名。你可以给比方说:你可以给www.parisqian.com 加 CNAME 到 qiansen1386.github.io 但不能把 parisqian.com 也指向 qiansen1386.github.io。这将导致 @parisqian.com 的 MX 记录失效。(故而 DNS 标准形成时候的几个 RFC 都不允许这种做法)(在 www 子域名上应用 CNAME 可解)
  3. 很不易于推广嘛。你怎么跟你的用户解释,为什么打 www 和不打 www 打开的网站完全不同?并且叮嘱网友一定要加 www(:з」∠)

CNAME Flatten 可解!

CNAME Flatten 会解析并把你的 CNAME 记录解析为一系列 A 记录的缓存,赛高得死🙌。

$ dig example.com

QUESTION SECTION:
;example.com.   IN   A

;; ANSWER SECTION:
example.com.   299   IN   A   162.159.255.115
example.com.   299   IN   A   162.159.254.115
example.com.   299   IN   A   162.159.252.116
example.com.   299   IN   A   162.159.253.116
example.com.   299   IN   A   162.159.253.115

抄自 Cloudflare

附录#

#1 CNAME是啥?别名解析,也就是从一个域名指向另一个域名。由此可以形成一个解析链条。并最终得到一个具体的 A 或 AAAA 记录(即 IP)。

#2 最常见的资源记录类型有

  • A记录(主机记录):RFC 1035定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
  • CNAME记录(别名记录): RFC 1035定义,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
  • AAAA记录(IPv6主机记录): RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。

(来源域名系统 - 维基百科

#3 DNS 的几个主要 RFC 的生成年份

参考:https://support.cloudflare.com/hc/en-us/articles/200169056-CNAME-Flattening-RFC-compliant-support-for-CNAME-at-the-root

来源:https://www.jianshu.com/p/4ec44dc6dad4

发表在 linux | CNAME Flattening已关闭评论

CoAP

COAP协议简介

Coap(Constrained Application Protocol)是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252。COAP名字翻译来就是“受限应用协议”,顾名思义,使用在资源受限的物联网设备上。物联网设备的ram,rom都通常非常小,运行TCP和HTTP是不可以接受的。

COAP协议特点

1 COAP协议网络传输层由TCP改为UDP。

COAP协议层

2 它基于REST,server的资源地址和互联网一样也有类似url的格式,客户端同样有POST,GET,PUT,DELETE方法来访问server,对HTTP做了简化。

3 COAP是二进制格式的,HTTP是文本格式的,COAP比HTTP更加紧凑。

4 轻量化,COAP最小长度仅仅4B,一个HTTP的头都几十个B了。

5 支持可靠传输,数据重传,块传输。 确保数据可靠到达。

6 支持IP多播, 即可以同时向多个设备发送请求。

7 非长连接通信,适用于低功耗物联网场景。

COAP协议消息类型

COAP协议有4种消息类型

CON—— 需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。这有点像TCP,对方必须给确认收到消息,用以可靠消息传输。

可靠消息传输

NON—— 不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。这适用于消息会重复频繁的发送,丢包不影响正常操作。这个和UDP很像。用以不可靠消息传输。

不可靠消息传输

ACK —— 应答消息,对应的是CON消息的应答。

RST —— 复位消息,可靠传输时候接收的消息不认识或错误时,不能回ACK消息,必须回RST消息。

COAP消息格式

coap消息格式

消息头(HEAD)

第一行是消息头,必须有,固定4个byte。

Ver : 2bit, 版本信息,当前是必须写0x01。

T: 2bit, 消息类型,包括 CON, NON. ACK, RST这4种。

TKL: 4bit,token长度, 当前支持0~8B长度,其他长度保留将来扩展用。

Code:8bit,分成前3bit(0~7)和后5bit(0~31),前3bit代表类型。 0代表空消息或者请求码, 2开头代表响应码,取值如下:

1 0.00 Indicates an Empty message

2 0.01-0.31 Indicates a request.

3 1.00-1.31 Reserved

4 2.00-5.31 Indicates a response.

5 6.00-7.31 Reserved

Message ID:16bit, 代表消息MID,每个消息都有一个ID ,重发的消息MID不变

token(可选)用于将响应与请求匹配。 token值为0到8字节的序列。 ( 每条消息必须带有一个标记, 即使它的长度为零)。 每个请求都带有一个客户端生成的token, 服务器在任何结果响应中都必须对其进行回应。token类似消息ID,用以标记消息的唯一性。token还是消息安全性的一个设置,使用全8字节的随机数,使伪造的报文无法获得验证通过。option(可选,0个或者多个)

请求消息 与回应消息都可以0~多个options。 主要用于描述请求或者响应对应的各个属性,类似参数或者特征描述,比如是否用到代理服务器,目的主机的端口等。

payload(可选)

实际携带数据内容, 若有, 前面加payload标识符“0xFF”,如果没有payload标识符,那么就代表这是一个0长度的payload。如果存在payload标识符但其后跟随的是0长度的payload,那么必须当作消息格式错误处理。

COAP的请求码(requests)和响应码(responses)

【0.01】GET方法——用于获得某资源

【0.02】POST方法——用于创建某资源

【0.03】PUT方法——用于更新某资源

【0.04】DELETE方法——用于删除某资源

CoAP的URL

coap的url和HTTP的有很相似的地方,开头是“coap”对应“http”或者“coaps”对应“https”。

HTTP的默认端口是tcp 80,coap的默认端口是udp 5683(coaps是5684)。

URL里面的“/”“&”“.”

下面三个URL的地址是一样的。访问example.com这个域名,端口是udp 5683,访问的资源地址是~sensors/temp.xml。

coap://example.com:5683/~sensors/temp.xml

coap://EXAMPLE.com/%7Esensors/temp.xml

coap://EXAMPLE.com:/%7esensors/temp.xml

COAP的安全性

COAP的安全性是用DTLS加密实现的。DTLS的实现需要的资源和带宽较多,如果是资源非常少的终端和极有限的带宽下可能会跑不起来。DTLS仅仅在单播情况下适用。

发表在 iot | CoAP已关闭评论

案例图片

发表在 article | 案例图片已关闭评论

maven

Maven

~/.m2

Maven mirrors aliyun

<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

Maven mirrors tencent

<mirror>
<id>nexus-tencent</id>
<mirrorOf>*</mirrorOf>
<name>Nexus-tencent</name>
<url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror> 

 

.

 

 

 

发表在 java | maven已关闭评论