netcat的一些远程用法

一、远程传输文件压缩包 tar zcvf - /export/A0 | nc 192.168.86.5 8732 nc -l 8732 > A0.tar.gz 方向倒过来也是可以的,在服务端压缩文件 tar zcvf - /export/A0 | nc -l -p8732 nc 192.168.86.5 8732 > A0.tar.gz 二、远程传输整个目录 tar cvf - /export/A0 | nc 192.168.86.5 8732 nc -l 8732 | tar xvf - 三、远程备份分区到一个文件 dd if=/dev/sdb | gzip -c | nc 192.168.86.5 8732 nc -lp 8732 | dd of=/backup/sdb.img.gz 四、将远程分区备份文件拉到本地并恢复分区 cat /backup/sdb.img.gz | nc 192.168.86.5 8732 nc -lp 8732 | gunzip -c | sudo dd of=/dev/sdb

2024年1月19日

Linux下Screen乱码

很烦躁的问题,Terminal 终端是UTF8,显示无问题。 可是运行 screen 后就乱码,screen 后的 env 环境跟之前一样,完全无问题 解决方法如下: 在自己用户的.screenrc中加两句 defencoding utf-8 encoding utf-8 utf-8 得把环境变量带到screen中,才行。

2024年1月19日

jenkins中execute shell的注意事项

缺省jenkins的execute shell的方式是如下带着参数的: sh -xe hudsonxxx.sh 说明一下: -e 打开开关 表示一旦脚本中有命令的返回值为非0,则脚本立即退出,后续命令不再执行; +e 关上开关 -x 打开开关 表示执行指令后,会先显示该指令及所下的参数。 +x 关上开关 详细解释一下: set -e 表示一旦脚本中有命令的返回值为非0,则脚本立即退出,后续命令不再执行; set -x 表示执行指令后,会先显示该指令及所下的参数。 set -o pipefail 表示在管道连接的命令序列中,只要有任何一个命令返回非0值,则整个管道返回非0值,即使最后一个命令返回0. 注意在引用nvm以及meteor的环境中,要设置set +e 否则source nvm.sh的过程容易出错!

2024年1月19日

linux下如何在命令行下解析处理json文件

最近调试Elasticsearch比较多,老用curl来查看数据,pretty=on固然是好,可是如果要具体看传回来的json数据,还是不方便,另外如果想在shell里处理json格式,就不知道如何是好了。就被迫改用python了,有没有在shell下调试json的工具呢? 有,就是jq,安装so easy: wget http://stedolan.github.io/jq/download/linux32/jq (32-bit system) wget http://stedolan.github.io/jq/download/linux64/jq (64-bit system) chmod +x ./jq mv jq /usr/local/bin 给个json样本文件 cat google.json { "name": "Google", "location": { "street": "1600 Amphitheatre Parkway", "city": "Mountain View", "state": "California", "country": "US" }, "employees": [ { "name": "Michael", "division": "Engineering" }, { "name": "Laura", "division": "HR" }, { "name": "Elise", "division": "Marketing" } ] } 看上面,{}括起来的是对象,如果是[]括起来的就是数组了,nodejs要注意这一点,其实json是js的Object的子集。 获取对象: cat google.json | jq '.name' "Google" 获取嵌套对象: cat google.json | jq '.location.city' "Mountain View" 获取一个数组的值: cat google.json | jq '.employees[0].name' "Michael" 获取对象的多个字段: cat google.json | jq '.location | {street, city}' { "city": "Mountain View", "street": "1600 Amphitheatre Parkway" } 很简单吧,和curl结合起来,就可以在shell进行编程处理json文件了。 ...

2024年1月19日

linu下如何让mount显示的很整齐

如果单独执行mount命令,显示的会很杂乱: mount /dev/sda3 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) You have mail in /var/spool/mail/root 乱作一团,那么怎么让这些显示整齐一些呢? mount |column -t /dev/sda3 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) 整齐多了,对吧。 ...

2024年1月19日

群晖(黑群晖)的备份

数据很重要、数据很重要、数据很重要!!! 重要的话说三遍,话说自己买了个黑群晖,6盘位的,就是为了保存照片和数据…… 其实1盘和2盘的nas都是耍流氓,根本无用,必须是4盘位以上的才勉强可靠。所以才买的这个黑群晖,只买了3个盘做了raid5,侥是如此,真的是莫名坏了一块,好在在保修期内,更换一块后故障解除,期间倒腾2块盘的数据依然是噩梦啊。 那么数据如此重要,那么怎么做到完全的备份呢? 数据是3盘raid5,已经有保证了,剩下就是系统也必须有备份可恢复才可以 群晖本质是linux,文件系统是mdadm+lvm,所以备份也必须从这个方向开始。 首先是备份启动的usb盘,先fdisk -l 看一下: Disk /dev/sda: 2000.3 GB, 2000398934016 bytes 255 heads, 63 sectors/track, 243201 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 311 2490240 fd Linux raid autodetect Partition 1 does not end on cylinder boundary /dev/sda2 311 572 2097152 fd Linux raid autodetect Partition 2 does not end on cylinder boundary /dev/sda3 588 243201 1948793440+ fd Linux raid autodetect Disk /dev/sdb: 2000.3 GB, 2000398934016 bytes 255 heads, 63 sectors/track, 243201 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 311 2490240 fd Linux raid autodetect Partition 1 does not end on cylinder boundary /dev/sdb2 311 572 2097152 fd Linux raid autodetect Partition 2 does not end on cylinder boundary /dev/sdb3 588 243201 1948793440+ fd Linux raid autodetect Disk /dev/sdc: 2000.3 GB, 2000398934016 bytes 255 heads, 63 sectors/track, 243201 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 1 311 2490240 fd Linux raid autodetect Partition 1 does not end on cylinder boundary /dev/sdc2 311 572 2097152 fd Linux raid autodetect Partition 2 does not end on cylinder boundary /dev/sdc3 588 243201 1948793440+ fd Linux raid autodetect Disk /dev/sdu: 4227 MB, 4227858432 bytes 4 heads, 32 sectors/track, 64512 cylinders Units = cylinders of 128 * 512 = 65536 bytes Device Boot Start End Blocks Id System /dev/sdu1 * 1 256 16352+ e Win95 FAT16 (LBA) 3块2T的盘,每个盘有3个分区,然后最后是USB盘,盘符sdu,备份它 ...

2024年1月19日

如何把jpg合成gif

用ffmpeg就很简单了 首先把要合并的jpg都变成合适的尺寸 convert -resize 300x *.jpg 然后变gif convert -delay 30 -loop 0 1.jpg 2.jpg 3.jpg 4.jpg result.gif -loop 0 表示无限循环 -delay 30 表示每帧之间等待的时间

2024年1月19日

mac os下安装openvpn客户端并设置自启动

没办法,网络环境太烂,只能装个openvpn client连接到服务器,系统是mac,要求一直保持连接,还要能重启自动连。 安装过程如下: 1.安装openvpn brew install openvpn 2.安装tun/tap驱动 wget http://downloads.sourceforge.net/tuntaposx/tuntap_20150118.tar.gz tar zxvf tuntap_20150118.tar.gz 然后在mac os桌面下,双击tuntap_20150118.pkg安装 3.准备client.conf文件,这个文件就是标准的client端文件 4.测试是否可以正常启动 /usr/local/opt/openvpn/sbin/openvpn --config /usr/local/etc/openvpn/ddky.conf 5.测试成功后在mac os编写plist文件 vi /Library/LaunchDaemons/net.openvpn.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd";> <plist version="1.0"> <dict> <key>Label</key> <string>net.openvpn</string> <key>KeepAlive</key> <dict> <key>NetworkState</key> <true/> </dict> <key>Program</key> <string>/usr/local/opt/openvpn/sbin/openvpn</string> <key>ProgramArguments</key> <array> <string>openvpn</string> <string>--config</string> <string>/usr/local/etc/openvpn/client.conf</string> </array> <key>RunAtLoad</key> <true/> <key>TimeOut</key> <integer>90</integer> <key>WorkingDirectory</key> <string>/usr/local/etc/openvpn</string> </dict> </plist> 6.然后运行 ...

2024年1月19日

Ubuntu下如何给所有用户安装nodejs的nvm

最近工作比较多在Ubuntu平台下。 用visualenv和nvm比较多,但是nvm遇到的问题比较多。 比如jenkins调用nvm就比较麻烦 如何用用root用户给所有用户都装上统一的nvm呢? 1、首先安装基本依赖包: apt-get install build-essential openssl libssl-dev curl 2、建个公共组,这个组的成员可以控制nvm: groupadd dev 3、git克隆下载nvm的代码 git clone https://github.com/creationix/nvm.git /opt/nvm 4、建立两个公用目录,一个是放nvm,一个是放nodejs的npm,并设置好权限 mkdir /usr/local/nvm mkdir /usr/local/node chown -R root:dev /usr/local/nvm chmod -R 775 /usr/local/nvm chown -R root:dev /usr/local/node chmod -R 775 /usr/local/node 5、建立好公用的 /etc/profile.d/nvm.sh 供所有人source用,注意,source命令是bash下用的,如果是sh,就用.替代。 export NVM_DIR=/usr/local/nvm source /opt/nvm/nvm.sh export NPM_CONFIG_PREFIX=/usr/local/node export PATH="/usr/local/node/bin:$PATH" 6、断开重新登录,加载nvm nvm --version 7、安装特定版本的node nvm install V18.18.2 8、设置缺省node的版本 nvm alias default V18.18.2 9、随后把用户拉进dev组,然后登陆就可以了。验证命令如下: nvm list node -v

2024年1月19日

ulimit的用法

基本常识,各种语焉不详啊,其实ulimit最常用的就两个参数 -u number: 单个用户能运行的最大进程数 -n number: 单个进程可以同时打开的文件描述符的最大值,缺省1024 有两个地方需要设置,Hard和Soft,Hard是Soft的最高限值,天花板。这两个值都可以针对某用户单独设置。 所以设法如下: ulimit -S -n 10240 ulimit -H -n 20480 ulimit -S -u 10240 ulimit -H -u 20480 可以在/etc/security/limits.conf里设置 * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 也可以在/etc/rc.d/rc.local中用命令设置 cat /etc/rc.d/rc.local ... ulimit -u 204800 -HSn 204800 ...

2024年1月18日