填充模式,PKCS#5/PKCS7

‘填充模式,PKCS#5/PKCS7’ https://blog.csdn.net/test1280/article/details/75268255 填充模式: PKCS#5/PKCS7 首先我们要了解下啥是填充模式。 在分组加密算法中 (例如DES) ,我们首先要将原文进行分组,然后每个分组进行加密,然后组装密文。 其中有一步是分组。 如何分组? 假设我们现在的数据长度是24字节,BlockSize是8字节,那么很容易分成3组,一组8字节; 考虑过一个问题没,如果现有的待加密数据不是BlockSize的整数倍,那该如何分组? 例如,有一个17字节的数据,BlockSize是8字节,怎么分组? 我们可以对原文进行填充 (padding) ,将其填充到8字节的整数倍! 假设使用PKCS#5进行填充 (以下都是以PKCS#5为示例) ,BlockSize是8字节 (64bit) : 待加密数据原长度为1字节: 0x41 填充后: 0x410x070x070x070x070x070x070x07 待加密数据原长度为2字节: 0x410x41 填充后: 0x410x410x060x060x060x060x060x06 待加密数据原长度为3字节: 0x410x410x41 填充后: 0x410x410x410x050x050x050x050x05 待加密数据原长度为4字节: 0x410x410x410x41 填充后: 0x410x410x410x410x040x040x040x04 待加密数据原长度为5字节: 0x410x410x410x410x41 填充后: 0x410x410x410x410x410x030x030x03 待加密数据原长度为6字节: 0x410x410x410x410x410x41 填充后: 0x410x410x410x410x410x410x020x02 待加密数据原长度为7字节: 0x410x410x410x410x410x410x41 填充后: 0x410x410x410x410x410x410x410x01 待加密数据原长度为8字节: 0x410x410x410x410x410x410x410x41 填充后: 0x410x410x410x410x410x410x410x410x080x080x080x080x080x080x080x08 假设待加密数据长度为x,那么将会在后面padding的字节数目为8-(x%8),每个padding的字节值是8-(x%8)。 特别地,当待加密数据长度x恰好是8的整数倍,也是要在后面多增加8个字节,每个字节是0x08。 给出一个PKCS#5的实现: static size_t padding(unsigned char *src, size_t srcLen) { // PKCS#5 size_t paddNum = 8 - srcLen % 8; ...

2018-07-10 · 4 min · 738 words · -

systemctl start networking.service

systemctl start networking.service networking.service raises or downs the network interfaces configured in /etc/network/interfaces, that is, those network interfaces which are not managed by NetworkManager. If you look into /lib/systemd/system/networking.service you will see that all it does is ifup or ifdown depending on whether it is to be started or stopped. https://askubuntu.com/questions/850339/what-is-the-networking-service

2018-07-08 · 1 min · 51 words · -

raspberry pi router

raspberry pi router http://www.embeddedlinux.org.cn/emb-linux/entry-level/201703/18-6294.html sudo -i apt-get install dnsmasq hostapd vim /etc/dhcpcd.conf # 并在文件的最后一行添加以下内容 #Disable the dhcp client daemon config (denyinterfaces) #This is important because otherwise it will be requesting an address from itself and it will also end up having two IP addresses; not the end of the world but also not very tidy. So sudo nano /etc/#dhcpcd.conf and append the following line: denyinterfaces wlan0 systemctl stop networking.service systemctl disable networking.service vim /etc/systemd/network/eth0.network [Match] Name=eth0 [Network] DHCP=yes vim /etc/systemd/network/wifi.network [Match] Name=wlan0 [Network] Address=192.168.55.1/24 systemctl start systemd-networkd systemctl enable systemd-networkd /etc/hostapd/hostapd.conf vim /etc/hostapd/hostapd.conf ...

2018-07-05 · 2 min · 242 words · -

FQDN

FQDN https://blog.csdn.net/u012842205/article/details/51931017 FQDN 是完全合格域名/全程域名缩写, Fully Qualified Domain Name, 即是域名, 访问时将由 DNS 进行解析, 得到IP。 FQDN = Hostname + DomainName 当我们申请了一个域名时, 就可以使用这个域名来得到 IP,但若这个域名下挂在很多主机如何? 我是不是得申请很多很多域名给每个主机? 不需要, 域名即创建了一个域, 就如命名空间, 在这个命名空间下, 其他主机都可以创建自己的名称。这个名称就是通过以上公式得来。 举个例子, 一个公司申请了域名 comp.com, 这时候有一台主机名为 web, 则可以使用 web.comp.com 得到这个主机IP。 若还有两台提供邮件和 OA 服务的主机 cmail,oa,则这时候可以用以下 FQDN: cmail.comp.com oa.comp.com 类似例子也在安装 linux 系统时, 很多时候我们安装 Ubuntu, Debian 或 Kali 时, 会需要你填写一个域, 这个域即是你自己的, 只是没有注册,且只能在本地网络使用。 Linux 下查看方式: hostname, 查看主机名 hostname -f 查看 FQDN dnsdomainname 查看域 uname -h 查看主机名 注: 主机名作为一个网络节点的标示。

2018-07-03 · 1 min · 69 words · -

Mesos

Mesos Mesos 最初由 UC Berkeley 的 AMP 实验室于 2009 年发起,遵循 Apache 协议,目前已经成立了 Mesosphere 公司进行运营。Mesos 可以将整个数据中心的资源 (包括 CPU、内存、存储、网络等) 进行抽象和调度,使得多个应用同时运行在集群中分享资源,并无需关心资源的物理分布情况。 https://yeasy.gitbooks.io/docker_practice/mesos/intro.html

2018-06-30 · 1 min · 19 words · -

tlv

tlv 通信协议 (communications protocol) 是指双方实体完成通信或服务所必须遵循的规则和约定。通过通信信道和设备互连起来的多个不同地理位置的数据通信系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言。交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则。这个规则就是通信协议。 本文描述了一种 Type-length-value 结构的数据编码格式,简称为TLV编码。对于TCP/IP模型来说,TLV属于应用层协议。TLV编码可以自我嵌套,即一个TLV的value部分可以包含一个或多个TLV,这样的结构使得TLV编码十分容易扩展。 http://www.wtango.com/tlv%E7%BC%96%E7%A0%81%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE%E8%AE%BE%E8%AE%A1/

2018-06-25 · 1 min · 9 words · -

yubikey, archlinux sudo, challenge-response

yubikey, challenge-response archlinux sudo install yubi pam set configuration sloat 2 as hmac-sha1 ykpamcfg -2 -v mkdir /data/yubikey mv ~/.yubico/challenge-123456’ /data/yubikey vim /etc/pam.d/sudo add line auth sufficient /usr/lib/security/pam_yubico.so mode=challenge-response debug chalresp_path=/data/yubikey auth sufficient /usr/lib/security/pam_yubico.so mode=challenge-response chalresp_path=/data/yubikey pacman -S yubico-pam pacman -S yubikey-manager

2018-06-24 · 1 min · 42 words · -

数字摘要, 数字签名

数字摘要, 数字签名 http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html http://ihenu.iteye.com/blog/2221604 数字摘要和数字签名等概念 数字摘要技术 数字摘要技术 (Digital Digest) 也称作为安全HASH编码法 (SHA: Secure Hash Algorithm) 。数字摘要技术用于对所要传输的数据进行运算生成信息摘要,它并不是一种加密机制,但却能产生信息的数字"指纹",它的目的是为了确保数据没有被修改或变化,保证信息的完整性不被破坏。 数字摘要技术有如下主要特点: ·它能处理任意大小的信息,并对其生成固定大小的数据摘要,数据摘要的内容不可预见 ·对于相同的数据信息进行HASH后,总是能得到同样的摘要;如果数据信息被修改,进行Hash后,其摘要必定与先前不同 ·HASH函数是不可逆的,无法通过生成的数据摘要恢复出源数据 数字签名 数字签名 (Digital Signature) 用来保证信息传输过程中完整性、提供信息发送者的身份认证和不可抵赖性。使用公开密钥算法是实现数字签名的主要技术。 使用公开密钥算法,当你用自己的私钥加密了一个信息,并将其发送给一个朋友时,如果你的朋友能够使用你的公钥来解密出信息,他就能确定信息必定是从你那里发来的,而不是一些冒名顶替的。这实际上就是数字签名的原理。 由于公开密钥算法的运算速度比较慢,因此可使用HASH函数对要签名的信息进行摘要处理,减小使用公开密钥算法的运算量。因此,数字签名一般是结合了数字摘要技术和公开密钥算法共同使用 实现数学签名的过程如下: 签名信息 1. 对信息M进行HASH函数处理,生成摘要H 2. 用你的 (发送者的) 私钥加密H来获取数字签名S 3. 发送 {M, S} 验证签名信息 1. 接受{M, S} 并区分开它们 2. 对接收到的信息 M进行HASH函数处理,生成摘要H* 3. 取得发送者的公钥 4. 用公钥解密S,来获取H 5. 比较H和H*,如果H和H*是一样的,即说明信息在发送过程中没有被篡改,反之即反 由于对信息进行数字签名后,明文信息也通过网络进行传递,因此,在做完数字签名后,还要对整个信息 (包括明文信息M和数字签名的密文信息S) 进行加密,以保证信息的保密性。 数字证书: 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息和公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关 (证书授权中心) 的名称,该证书的序列号等信息,证书的格式遵循ITUT。 CA机构 证书授证 (Certificate Authority) 中心 出现CA机构的目的: 防止有的一些用户的公钥被非法替换,造成数据的泄露

2018-06-24 · 1 min · 66 words · -

SHA, Secure Hash Algorithm

SHA, Secure Hash Algorithm 安全散列算法 (英语: Secure Hash Algorithm,缩写为SHA) 安全散列算法SHA (Secure Hash Algorithm) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院 (NIST) 发布的一系列密码散列函数,包括 SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512 等变体。主要适用于数字签名标准 (DigitalSignature Standard DSS) 里面定义的数字签名算法 (Digital Signature Algorithm DSA) Hash 是什么,它的作用 先举个例子。我们每个活在世上的人,为了能够参与各种社会活动,都需要一个用于识别自己的标志。也许你觉得名字或是身份证就足以代表你这个人,但是这种代表性非常脆弱,因为重名的人很多,身份证也可以伪造。最可靠的办法是把一个人的所有基因序列记录下来用来代表这个人,但显然,这样做并不实际。而指纹看上去是一种不错的选择,虽然一些专业组织仍然可以模拟某个人的指纹,但这种代价实在太高了。 而对于在互联网世界里传送的文件来说,如何标志一个文件的身份同样重要。比如说我们下载一个文件,文件的下载过程中会经过很多网络服务器、路由器的中转,如何保证这个文件就是我们所需要的呢?我们不可能去一一检测这个文件的每个字节,也不能简单地利用文件名、文件大小这些极容易伪装的信息,这时候,我们就需要一种指纹一样的标志来检查文件的可靠性,这种指纹就是我们现在所用的Hash算法(也叫散列算法)。 散列算法 (Hash Algorithm) ,又称哈希算法,杂凑算法,是一种从任意文件中创造小的数字「指纹」的方法。与指纹一样,散列算法就是一种以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。因此,当原有文件发生改变时,其标志值也会发生改变,从而告诉文件使用者当前的文件已经不是你所需求的文件。 这种标志有何意义呢?之前文件下载过程就是一个很好的例子,事实上,现在大部分的网络部署和版本控制工具都在使用散列算法来保证文件可靠性。而另一方面,我们在进行文件系统同步、备份等工具时,使用散列算法来标志文件唯一性能帮助我们减少系统开销,这一点在很多云存储服务器中都有应用。 https://blog.csdn.net/asdzheng/article/details/70226007

2018-06-24 · 1 min · 40 words · -

U2F(Universal 2 Factor)

U2F(Universal 2 Factor) U2F(Universal 2 Factor)标准是由Yubico公司和Google发起的FIDO(Fast IDentity Online)联盟推出的标准, 旨在提供一个方便的免驱动、通用型的密码认证令牌, 期望能在让用户在有U2F认证的情况下, 即使用短密码, 也能实现高强度的认证. 而且这种认证是不依赖中心服务器的, 完全基于公私钥/PKI体系. U2F的物理层可以是USB-HID, 也可以是NFC(目前Yubikey Neo支持)http://scateu.me/2016/11/30/u2f-zero.html FIDO U2F规范,U2F (Universal 2nd Factor) 是 Yubico, Yahoo 和 Google 联合开发的基于物理设备的双因素认证协议,目前已经完成标准化,从属于 FIDO (Fast Identity Online) 联盟名下。

2018-06-24 · 1 min · 33 words · -

kibana 查询

kibana 查询 匹配查询 message: "15909840000" 模糊查询 message:1590984* Range Searches mod_date:[20020101 TO 20030101] 逻辑操作 AND OR 必须大写 AND OR 表示搜索结果中必须包含此项 表示不能含有此项 source:S0 AND message:M0 https://lucene.apache.org/core/2_9_4/queryparsersyntax.html https://www.jianshu.com/p/e6143951be9b

2018-06-22 · 1 min · 25 words · -

manually install python modules

manually install python modules https://stackoverflow.com/questions/32798137/importerror-no-module-named-appdirs download modules from pypi.python.org wget https://pypi.python.org/packages/48/69/d87c60746b393309ca30761f8e2b49473d43450b150cb08f3c6df5c11be5/appdirs-1.4.3.tar.gz gunzip appdirs-1.4.3.tar.gz tar -xvf appdirs-1.4.3.tar cd appdirs-1.4.3 sudo python setup.py install

2018-06-20 · 1 min · 22 words · -

yubikey

yubikey HMAC-SHA1 challenge-response YubiKey 4 可以同时工作在三种模式: OTP mode: 作为键盘设备 (HID) : Yubico OTP, 第一次使用前需要把 KEY_ID,AES_KEY,SECRET 提交至验证服务器 (Yubico提供或者自己搭建) ,之后应用程序每次通过服务器验证密码的可靠性 (解码后SECRET对应、COUNT增大 (防止重放攻击) ) 。 Challenge-Response: 即可以通过 HID 接口给定一个输入, 输入 HMAC 的计算结果。输入需要本地代码实现。 静态密码, HOTP:算法与Challenge-Response类似,然而使用累加计数器代替了输入,并且HTOP是一个标准协议,许多网站和设备都兼容该标准。 在YubiKey中包含两个configuration slot,每一个slot可以单独配置以上模式中的其中一种,通过短触和长触来选择输入。 U2F mode: U2F 是一个开源的认证标准协议, 使用非对称加密算法, 在每次需要认证是设备可以对 challenge 信息使用私钥进行签名来完成认证。 作为一个开源的标准协议, Google、Dropbox 等网站都支持这种协议的两步验证, 然而现阶段浏览器端仅有 Chrome 支持。 CCID mode, Smartcard 模式: CCID (SmartCard) OpenPGP card 和 PIV card, 可以用来安全地保存 RSA 私钥 YubiKey 还可以作为标准的 OpenPGP Smart Card 使用, 用来存储 PGP 私钥 (设备中私钥是可写不可读的, 解密/签名操作在设备上完成) 。关于 PGP Smart Card 的更多信息, 可以参考这篇文章。 ...

2018-06-20 · 3 min · 579 words · -

date command

date command 输出指定时区的时间 shell 支持在 date 命令前,指定 TZ 参数,即指定时区,这样 dat e输出将会输出指定时区的时间。TZ 是 timezone 的缩写。 TZ=0 date date 打印的日期格式 默认打印12小时制的 # 默认打印 24小时制时间 vim /etc/profile.d/lctime.sh export LC_TIME=POSIX LC_TIME 选择C语言环境的时间格式类别 -d 参数支持自然语言输入,无符号默认为 + date -d "+1 day" date -d "-1 month" date [OPTION]... [+FORMAT] 日期格式化 date '+%Y-%m-%d %H:%M:%S' 纳秒,毫秒 使用 date +%s%N 可以获得一个纳秒级的unix时间戳(当前时间),然后根据需要截取一部分即可得到毫秒级的精度 # 纳秒 date +%s%N # 毫秒 $(($(date +%s%N)/1000000)) # 毫秒, 另外一种作废的不再建议使用的语法 echo $[$(date +%s%N)/1000000] 参数 %s seconds since 1970-01-01 00:00:00 UTC %N nanoseconds (000000000..999999999) # output date and time in RFC 5322 format. Example: Mon, 14 Aug 2006 02:34:56 -0600 date -R # 设置时间和日期 sudo date -s "04/12/2019 09:03:00" sudo date -s "2019-04-12 09:04:00" # 将系统日期设定成2009年11月3日的命令 date -s 11/03/2009 # 将系统时间设定成下午5点55分55秒的命令 date -s 17:55:55 http://jerrybear.blog.51cto.com/629421/393097 ...

2018-06-20 · 3 min · 552 words · -

linux seq

linux seq seq命令用于产生从某个数到另外一个数之间的所有整数。 seq [选项]… 尾数 seq [选项]… 首数 尾数 seq [选项]… 首数 增量 尾数 http://man.linuxde.net/seq

2018-06-20 · 1 min · 16 words · -

算法效率, 算法分析

算法效率, 算法分析 https://blog.csdn.net/zolalad/article/details/11848739 https://www.zhihu.com/question/21387264 算法的时间复杂度和空间复杂度 通常,对于一个给定的算法,我们要做两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。因此,作为程序员,掌握基本的算法时间复杂度分析方法是很有必要的。 算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量。而度量一个程序的执行时间通常有两种方法。 一、事后统计的方法 这种方法可行,但不是一个好的方法。该方法有两个缺陷: 一是要想对设计的算法的运行性能进行评测,必须先依据算法编制相应的程序并实际运行;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素,有时容易掩盖算法本身的优势。 二、事前分析估算的方法 因事后统计方法更多的依赖于计算机的硬件、软件等环境因素,有时容易掩盖算法本身的优劣。因此人们常常采用事前分析估算的方法。 在编写程序前,依据统计方法对算法进行估算。一个用高级语言编写的程序在计算机上运行时所消耗的时间取决于下列因素: (1). 算法采用的策略、方法;(2). 编译产生的代码质量;(3). 问题的输入规模;(4). 机器执行指令的速度。 一个算法是由控制结构 (顺序、分支和循环3种) 和原操作 (指固有数据类型的操作) 构成的,则算法时间取决于两者的综合效果。为了便于比较同一个问题的不同算法,通常的做法是,从算法中选取一种对于所研究的问题 (或算法类型) 来说是基本操作的原操作,以该基本操作的重复执行的次数作为算法的时间量度。 时间复杂度 (1) 时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 (2) 时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。 另外,上面公式中用到的 Landau符号其实是由德国数论学家保罗·巴赫曼 (Paul Bachmann) 在其1892年的著作《解析数论》首先引入,由另一位德国数论学家艾德蒙·朗道 (Edmund Landau) 推广。Landau符号的作用在于用简单的函数来描述复杂函数行为,给出一个上或下 (确) 界。在计算算法复杂度时一般只用到大O符号,Landau符号体系中的小o符号、Θ符号等等比较不常用。这里的O,最初是用大写希腊字母,但现在都用大写英语字母O;小o符号也是用小写英语字母o,Θ符号则维持大写希腊字母Θ。 T (n) = Ο(f (n)) 表示存在一个常数C,使得在当n趋于正无穷时总有 T (n) ≤ C * f(n) 简单来说,就是T(n)在n趋于正无穷时最大也就跟f(n)差不多大。也就是说当n趋于正无穷时T (n)的上界是C * f(n)。其虽然对f(n)没有规定,但是一般都是取尽可能简单的函数。例如,O(2n2+n +1) = O (3n2+n+3) = O (7n2 + n) = O ( n2 ) ,一般都只用O(n2)表示就可以了。注意到大O符号里隐藏着一个常数C,所以f(n)里一般不加系数。如果把T(n)当做一棵树,那么O(f(n))所表达的就是树干,只关心其中的主干,其他的细枝末节全都抛弃不管。 在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。 按数量级递增排列,常见的时间复杂度有: 常数阶O(1),对数阶O(log2n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),…, k次方阶O(nk),指数阶O(2n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。 ...

2018-06-18 · 2 min · 304 words · -

温度监控, lm-sensors, temperature

温度监控, lm-sensors, temperature 不用安装其它软件的方法 cat /sys/class/thermal/thermal_zone0/temp echo $[$(cat /sys/class/thermal/thermal_zone0/temp)/1000]° sensors apt-get install lm-sensors # 检测传感器 sh -c "yes|sensors-detect" # 查看CPU的温度 sensors 输出 coretemp-isa-0000 Adapter: ISA adapter Package id 0: +57.0°C (high = +105.0°C, crit = +105.0°C) Core 0: +57.0°C (high = +105.0°C, crit = +105.0°C) Core 1: +57.0°C (high = +105.0°C, crit = +105.0°C) Core 2: +57.0°C (high = +105.0°C, crit = +105.0°C) Core 3: +58.0°C (high = +105.0°C, crit = +105.0°C) acpitz-acpi-0 Adapter: ACPI interface temp1: +27.8°C (crit = +119.0°C) nvme-pci-0400 Adapter: PCI adapter Composite: +64.8°C (low = -273.1°C, high = +84.8°C) (crit = +84.8°C) Sensor 1: +64.8°C (low = -273.1°C, high = +65261.8°C) Sensor 2: +74.8°C (low = -273.1°C, high = +65261.8°C) 原贴:http://goodfifagun.pixnet.net/blog/post/21587839 現在購買主機板時都會有廠商提供的監控軟體可以使用,而最常使用到到功 能像溫度監控,系統狀態等等,但是這些軟體都只能在windows 下使用,所 以如果要在 linux下監控CPU溫度,可以透過 lm-sensor這套軟體來監控。安裝環境: ubuntu 8.04.1 安裝步驟: 安裝lm-sensors apt-get install lm-sensors 2. 設定監控選項 sensors-detect 通常都是回答yes即可,注意最後一項,例如下面的資訊 To load everything that is needed, add this to /etc/modules: #--cut here-- I2C adapter drivers modprobe unknown adapter NVIDIA i2c adapter modprobe unknown adapter NVIDIA i2c adapter modprobe unknown adapter NVIDIA i2c adapter i2c-i801 ...

2018-06-17 · 2 min · 314 words · -

elasticsearch

elasticsearch #查看索引 GET /_cat/indices?pretty curl -X GET "localhost:9200/_cat/indices?v" GET /index-2018.09.29/_stats GET /_cat/indices?pretty # elasticsearch 重启后用以下命令观察集群状态。 watch -n 1 -d curl -XGET http://localhost:9200/_cluster/health\?pretty curl -X GET "localhost:9200/_cluster/allocation/explain?pretty" -H 'Content-Type: application/json' -d' { "index": "myindex", "shard": 0, "primary": true } ' unassigned_shards: 没有被分配到节点的分片 unassigned_shards 在elasticsearch 重启后会逐渐减少, 9如果最终unassigned_shards不为0,则需要手动处理。 # 找出未分配到结点的分片 curl -s "http://localhost:9200/_cat/shards" | grep UNASSIGNED curl 'localhost:9200/_cat/master?v' ES_JAVA_OPTS="-Xms2g -Xmx2g" /usr/share/elasticsearch/bin/elasticsearch -d -Ecluster.name=my-application -Enode.name=node-1 -Enode.master=true -Enode.data=false -Epath.data=/data/server/elasticsearch-node1 -Epath.logs=/data/logs/elasticsearch-node1 -Enetwork.host=0.0.0.0 -Ehttp.port=9200 -p /home/elasticsearch/node1_pid kill `cat /home/elasticsearch/node1_pid` curl -XGET http://localhost:9200/_cluster/health\?pretty curl -XGET http://localhost:9200/_cat/shards curl -s "http://localhost:9200/_cat/shards/index-0" curl 'localhost:9200/_nodes/process?pretty' #check if index exist curl --head "localhost:9200/twitter" curl -X GET "localhost:9200/_cat/health?v" curl -X GET "localhost:9200/_cat/nodes?v" curl -X PUT "localhost:9200/customer?pretty" curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d' { "name": "John Doe" } ' curl -X GET "localhost:9200/customer/_doc/1?pretty" # delete index curl -X DELETE "localhost:9200/index-0?pretty" curl -X DELETE "localhost:9200/customer/_doc/2?pretty" curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_doc/_bulk?pretty&refresh" --data-binary "@accounts.json" curl "localhost:9200/_cat/indices?v"

2018-06-12 · 1 min · 141 words · -

X11 forwarding

X11 forwarding https://wiki.archlinux.org/title/OpenSSH pacman -S xorg-xauth xorg-xhost /etc/ssh/sshd_config X11Forwarding yes AllowTcpForwarding yes X11UseLocalhost yes X11DisplayOffset 10 systemctl restart sshd pacman -S xorg-xclock https://gist.github.com/vietlq/8b20d09fdfe5f02f8b511c7847df39ee win 10 xserver, x11forward Install VcXsrv Windows X Server Download and install: https://sourceforge.net/projects/vcxsrv/ Check that VcXsrv runs and right-click, get logs to find DISPLAY=127.0.0.1:0.0 Note down the value of $DISPLAY and pass it ot PuTTY Configure PuTTY Navigate to SSH => X11 => Tick Enable X11 forwarding Pass the value of $DISPLAY (which is 127.0.0.1:0.0) to the field X display location Launch from Ubuntu Use PuTTy to log in as normal Run gvim for example on the Ubuntu via PuTTY Use the GVim window ...

2018-06-11 · 1 min · 110 words · -

rancher

rancher https://rancher.com/docs/rancher/v2.6/en/ RKE: Rancher Kubernetes Engine EKS: Amazon EKS (Elastic Kubernetes Service) GKE: Google Kubernetes Engine https://github.com/rancher/rancher https://helm.sh/ https://k3s.io/ k3s k3s 将安装 Kubernetes 所需的一切打包进仅有 XXMB 大小的二进制文件中。并且,为了减少运行 k8s 所需的内存,删除了很多不必要的驱动程序,并用附加组件对其进行替换。这样,它只需要极低的资源就可以运行且安装所需的时间也非常短,因此它能够运行在树莓派等设备上面,即 master 和 agent 运行在一起的模式。 裁剪功能 过时的功能和非默认功能 过时的功能和非默认功能 Alpha 功能 过时的功能和非默认功能内置的云提供商插件 过时的功能和非默认功能内置的存储驱动 过时的功能和非默认功能 Docker 项目特点 使用 SQLite 作为默认数据存储替代 etcd,但 etcd 仍然是支持的 内置了 local storage provider、service load balancer 等 所有 k8s 控制组件如 api-server、scheduler 等封装成为一个精简二进制程序,单进程即可运行 删除内置插件,比如 cloudprovider 插件和存储插件等 减少外部依赖,操作系统只需要安装较新的内核以及支持 cgroup 即可 缺点不足 因为在高可用的场景中,其没有办法做到或很难做到。所以如果你要进行大型的集群部署,那么我建议你选择使用 K8s 来安装部署。如果你处于边缘计算等小型部署的场景或仅仅需要部署一些非核心集群进行开发/测试,那么选择 k3s 则是性价比更高的选择。 在单个 master 的 k3s 中,默认使用的是 SQLite 数据库存储数据的,这对于小型数据库十分友好,但是如果遭受重击,那么 SQLite 将成为主要痛点。但是,Kubernetes 控制平面中发生的更改更多是与频繁更新部署、调度 Pod 等有关,因此对于小型开发/测试集群而言,数据库不会造成太大负载。 ...

2018-06-09 · 2 min · 256 words · -