Archive for linux

粗略的找了一个字体,要求不高,看着还行,然后小写l的样子有强迫症。最后选了一个monospace,总共看了没几个字体,这个就是下划线难看。以后再说 用打thinkpad,触摸板三指手势没搞定,网上的方法不好用,等后边再看看。 快捷键,准备把alt和ctrl调换一下,然后改一下终端tty的ctrl c中断。从网上搜了一下方法。 lsusb来确定外接键盘的vendorID和productID: dmesg 按键ID用的我之前文章里写的键盘记录工具。 /etc/udev/hwdb.d/ -:> cat external_keyboard.hwdb evdev:input:b*v0510p0032* KEYBOARD_KEY_0x700e2=leftctrl KEYBOARD_KEY_0x700e0=leftalt 执行更新操作 sudo udevadm hwdb --update sudo udevadm trigger --sysname-match="event*" 发现更改了也不好用,怎么都不能跟mac那样,还得改回去,看来只能慢慢适应了。

Continue

捣鼓同学发的东西,发现有个shell安装脚本加密了,shell从来没系统学过,根据原理肯定是可以解密的。但是看代码头疼,这是我不想学shell的原因,shell可以写的很奔放,然后我都是用到了才去查去学。 没办法想走近路,我就找了一行感觉很有特征的语句去搜一下有没有相同的代码碰碰运气,不巧搜到了,找到了一个gzexe。 google gzexe发现是个linux系统自带命令,mac下也有。然后自带解密功能。尝试了一下。 我写了一个test.sh就打印了一行echo。 gzexe test.sh加密。生成一个加密test.sh 和一个test.sh~源文件。 gzexe -d test.sh 解密。 我看了一下mac下的源码和搜出来的不一样,可以有很多版本。然后我对比了一下gzexe加密的文件和加密文件,发现真的就是个变种加密方式,变量名替换了,很多细节变了,总的一样的。 因为gzexe的简单,一眼瞅出原理,然后再看加密脚本很简单了,分分钟破解之。 这里有几个点,一个是我再测试机上vim编辑的时候,编辑完执行就报错,我感觉就是vim修改文件了,特别是最后一行是加密数据。 然后我使用vim -b 二进制编辑的搞定了。 还有一点bash +x test.sh的方式执行脚本可以显示执行顺序,这个google出来的。在这里没用上。 gzexe具体代码也没看。没兴趣看。

Continue

kubernetes 安装 yum install etcd kubernetes vim /etc/sysconfig/docker # OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false' OPTIONS='--selinux-enabled=false --insecure-registry gcr.io --log-driver=journald --signature-verification=false' vim /etc/kubernetes/apiserver # KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota" vim /etc/kubernetes/apiserver # KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1" KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" 这个后边api访问要用 一起改了 systemctl start etcd systemctl start docker systemctl start kube-apiserver systemctl start kube-controller-manager systemctl start kube-scheduler systemctl start kubelet systemctl start kube-proxy 搞一个可以执行python的镜像 docker search python docker pull docker.io/python docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/python latest b6cc5d70bc28 3 weeks ago 688.9 MB 测试 docker run -t -i b6cc5d70bc28 /bin/bash 启动输入python, 麻痹 3.6.1的,还好有python2。2.7.9 哈哈 创建个新的镜像,新建Dockerfile # 测试用滴 FROM docker.io/python EXPOSE 8080 # COPY main.py . CMD python2 -m SimpleHTTPServer 8080 docker build -t mytest/pyhttp:v1 . docker images REPOSITORY TAG IMAGE ID CREATED SIZE mytest/pyhttp v1 eefd8b0e5723 About a minute ago 688.9 MB docker.io/python latest b6cc5d70bc28 3 weeks ago 688.9 MB docker run -d eefd8b0e57 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 02e9d5c001c9 eefd8b0e57 "/bin/sh -c 'python2 " 8 seconds ago Up 6 seconds 8080/tcp jovial_shockley docker exec -i -t 02e9d5c001c9 /bin/bash ss -at State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 5 *:http-alt *:* 或者curl 127.0.0.1:8080 没问题了 docker kill 02e9d5c001c9 下边就开始搞k8s了 编辑pyhttp.yaml apiVersion: v1 kind: ReplicationController metadata: name: pyhttp spec: replicas: 2 selector: app: pyhttp template: metadata: labels: app: pyhttp spec: containers: - name: pyhttp image: mytest/pyhttp:v1 ports: - containerPort: 8080 kubectl create -f ./pyhttp.yaml replicationcontroller "pyhttp" created kubectl get rc kubectl get pods NAME READY STATUS RESTARTS AGE pyhttp-26pd2 0/1 ContainerCreating 0 1m pyhttp-v7qk2 0/1 ContainerCreating 0 1m kubectl describe replicationcontrollers/pyhttp kubectl get events 几个看状态的命令,等到都running了,就成功了 docker ps命令看启动了四个容器,两个pyhttp的。两个registry.access.redhat.com/rhel7/pod-infrastructure:latest 再写个httpserver.yaml apiVersion: v1 kind: Service metadata: name: http-service spec: type: NodePort selector: app: pyhttp ports: - protocol: TCP port: 8080 nodePort: 30080 kubectl create -f ./httpserver.yaml kubectl create -f ./httpserver.yaml service "http-service" created [root@localhost code]# kubectl get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE http-service 10.254.245.101 8080:30080/TCP 12s kubernetes 10.254.0.1 443/TCP 1h 然后就能通过30080访问了. 不过默认安装防火墙给过滤掉了,从机器外是访问不了的 装了个Dashboard,安装方法从官网github上装的。 我装的k8s是1.5的,安装命令 kubectl create -f https://git.io/kube-dashboard-no-rbac 默认监听的127.0.0.1需要制定地址 kubectl proxy --address='0.0.0.0' 然后就可以了 访问发现是

Unauthorized

看文档好像master上的只能在设置用户名密码的时候才能用 kubectl proxy --address='0.0.0.0' --accept-hosts='^*$' 然后跳转变成503. status: "Failure", message: "no endpoints available for service "kubernetes-dashboard"", reason: "ServiceUnavailable", 发现后端启动不成功 [root@localhost ~]# kubectl get pods --namespace=kube-system NAME READY STATUS RESTARTS AGE kubernetes-dashboard-3585514280-q29ml 0/1 CrashLoopBackOff 2 43s [root@localhost ~]# kubectl logs kubernetes-dashboard-3585514280-q29ml -n kube-system Using HTTP port: 8443 Error while initializing connection to Kubernetes apiserver. This most likely means that the cluster is misconfigured (e.g., it has invalid apiserver certificates or service accounts configuration) or the --apiserver-host param points to a server that does not exist. Reason: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory Refer to the troubleshooting guide for more information: https://github.com/kubernetes/dashboard/blob/master/docs/user-guide/troubleshooting.md 然后搜索有人说要把yaml指定,发现里边确实有注释,默认不行就指定。 - --apiserver-host=http://10.254.0.1:80 这个apiserver ip 命令 kubectl describe svc kubernetes 获取 然后发现还是不行,会出现timeout,这次能running了但是一会儿还是503 但是配置成http://192.168.49.111:8080的api访问地址就行了,外网也能访问了。具体还不太了解原理

Continue

使用pkg命令的时候报错 pkg: warning: database version 34 is newer than libpkg(3) version 33, but still compatible pkg: sqlite error while executing INSERT OR ROLLBACK INTO pkg_search(id, name, origin) VALUES (?1, ?2 || '-' || ?3, ?4); in file pkgdb.c:1544: no such table: pkg_search 从网上找到解决办法 pkg shell sqlite> CREATE VIRTUAL TABLE pkg_search USING fts4(id, name, origin); sqlite> sqlite> pragma user_version=33; 然后使用pkg lock pkg 锁定pkg版本,就不会要你升级pkg版本了

Continue

编辑freebsd文件~/.cshrc setenv LANG zh_CN.UTF-8 setenv LC_CTYPE zh_CN.UTF-8 setenv LC_ALL zh_CN.UTF-8 就可以显示中文了。 这里碰到了一点问题,突然发现ssh登录不上,登录的时候得ctrl c 才能显示命令提示符。不知道啥问题,时间长了就说远程断开连接。然后登录一个shell,再登录一个shell,观察发现,ssh,csh进程内存疯长,ulimit datasize相对于虚拟机大多了。直接把swap爆掉了就。爆了一个"kernel: swap_pager_getswapspace(16): failed"的错误。查了一大顿发现好像没人碰到过这个问题。然后就找工具调试,发现自带的有个truss,就试了一下。 发现全是在进行read(6,"\M^B",1)内核调用。然后从头大体看了一下,各种读的前边是跟语言相关的东西。然后找目录还是啥的报了各种找不到,猜测是不是这里有问题。其实啥没看懂,,只能懵逼。 我之前是在~/.login里配置的中文,现在挪到.cshrc里边。就好了。好奇怪的问题。。

Continue

rootkit hunter能检查一下系统是否被安装后门,听说很厉害。 去官网下载一个tar包,解压 安装 ./installer.sh --layout custom /opt/temp/rkhunter --install 这个是指定安装目录,日志都会打到/var/log/rkhunter.log 更新rootkit hunter的数据库 /opt/temp/rkhunter/bin/rkhunter --update 进行检查 /opt/temp/rkhunter/bin/rkhunter --checkall 然后查看结果 cat /var/log/rkhunter.log|grep "Warning\|Vulnerable" cat /var/log/rkhunter.log|grep -A 30 "System checks summary" 这个关键字可能不准确,具体看看总结,再细看检查的过程。

Continue

今天手贱升级了一个pkg版本,从pkg-1.9.3升级到pkg-1.9.4_1。然后就不能用了。提示 /usr/local/lib/libpkg.so.3: Undefined symbol "openat" pkg命令不能用了。好像是内核版本太低了。就找了一下怎么解决。 有个pkg-static命令可以使用,,然后/var/cache/pkg里边缓存的包。执行命令: pkg-static install -f /var/cache/pkg/pkg-1.9.3.txz 强制换低版本的pkg。然后就好了。。没有这个包可以去freebsd官网下一个。

Continue

freenas也支持nfs共享,配置完后,在ubuntu上不知道怎么挂载,得安装软件支持。 sudo mount -t nfs 192.168.0.88:/mnt/MyNAS /tmp/aaa 会不成功 mount: wrong fs type, bad option, bad superblock on 192.168.0.88:/mnt/MyNAS, missing codepage or helper program, or other error (for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount. helper program) 看了一下sbin目录确实没有nfs支持的文件。网上查,找到个showmount命令,执行发现没这个命令sudo apt-get install nfs-common安装。 安装完那个文件也有了。 showmount -e 192.168.0.88 Export list for 192.168.0.88: /mnt/MyNAS 192.168.0.0 然后就没问题了。 sudo mount -t nfs 192.168.0.88:/mnt/MyNAS /tmp/aaa 就成功了

Continue

master安装

curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -P -M
这个也会在机器上安装minion.

minion安装
curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -P
安装完salt-key --list-all是空的 然后修改配置文件/etc/salt/master和minion master interface: 0.0.0.0 minion master: 127.0.0.1 重启服务 /etc/init.d/salt-master restart /etc/init.d/salt-minion restart 然后
salt-key --list-all Unaccepted Keys:就有了
salt-key --accept-all是接受所有,salt-key --accept=<key>是接受一个。


艹 麻痹的写到这,多人反馈发布系统不能用了,,我在发布系统机器上装的,装完,建立的发布系统用的虚拟环境不能用了。
然后我重新装了一个虚拟环境,安装依赖还发现个问题,然后才好了。
这个需要注意卧槽

salt '*' test.ping 返回true 成功
 
 
 

Continue

supervisor的版本3.0a8的版本不支持stopasgroup的参数,感觉很痛苦。准备升级,debian的版本有点老,不支持apt-get升级。
然后准备用pip install安装新版本。


  • Stop service:
    service supervisor stop
    
  • Backup current configuration:
    mkdir ~/supervisor
    cp -r /etc/supervisor ~/etc-supervisor
    cp /etc/default/supervisor ~/supervisor/etc-default-supervisor
    cp /etc/init.d/supervisor ~/supervisor/etc-init.d-supervisor
    
  • Remove current installation:
    apt-get purge supervisor
    rm -fr /etc/supervisor
    
  • Install new supervisor:
    pip install supervisor
    
  • Restore configs:
    cp ~/supervisor/etc-default-supervisor /etc/default/supervisor
    cp ~/supervisor/etc-init.d-supervisor /etc/init.d/supervisor
    cp -r ~/etc-supervisor /etc/supervisor
    ln -s /etc/supervisor/supervisor.conf /etc/supervisor.conf #这一步新版本没必要
    
  • Start new supervisor:
    service supervisor start
    
  • Verify:
    supervisorctl
    
  • Set to run at startup:
    update-rc.d supervisor defaults
    
这样做完有个问题是pip install的目录是/usr/local/bin/目录,需要修改/etc/init.d/supervisor的文件里的路径。

Continue