Useful Commands

一些用过的命令,不定期更新

Posted by Chaway on 2017-03-19
  • launch ftp server;stop ftp server(mac)
sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist
  • show hiden files (mac)
defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder
defaults write com.apple.finder AppleShowAllFiles -boolean false ; killall Finder

  • show posix path on finder title bar (mac)
defaults write com.apple.finder _FXShowPosixPathInTitle -bool ture;killall Finder
defaults write com.apple.finder _FXShowPosixPathInTitle -bool false;killall Finder

  • Dock waiting time
defaults write com.apple.Dock autohide-delay -float 0 && killall Dock

  • check active Internet connection,lsof actually lists all file opened
[sudo] lsof -nP -i [:port]
  • statistics of connection,netstat on mac can’t show pid and process name
netstat -na [-p TCP]

Nmap
#print status of port
nmap 192.168.1.1
#scan specific ports
namp 192.168.1.1 -p 1-1000
#scan hosts in LAN
nmap -sP 192.168.1.0/24

  • nmcli manage wifi connection (Ubuntu)
[sudo] nmcli d disconnect wlan0
nmcli d wifi list
  • connect a new wifi

    nmcli d wifi connect Milky5g password sdfsfaffads

  • show wifi in list

    nmcli c show

  • connect a wifi in the list

    nmcli c up Milky5g


  • unlock file (mac)
    chflags nouchg filename

Firewall configuration about Linux:
  • check all rules

    sudo iptables -L --line-numbers

  • delete some rules.(note INPUT is only one chain in the table)

    sudo iptables -D INPUT 10

Add rules:
  • mac address

    sudo iptables -A INPUT -p tcp -m mac --mac-source aa:bb:cc:dd:ee:ff --dport ssh -j ACCEPT

  • ip address

    sudo iptables -A INPUT -p tcp -s 192.168.3.0/24 --dport ssh -j ACCEPT

  • save && reload current rules

    sudo netfilter-persistent save
    sudo netfilter-persistent reload


arping 发送特定的 arp 和 icmp 报文(Linux):
  • 如果已知目标的 ip 地址,想要获取对应的 mac 地址,可以利用 arp 协议来发送报文请求,目标 ip 收到报文后会将目标自己的 mac 地址封装在数据包中发送回去。

  • 自带 arping 命令,支持广播报文,可自定义 src.ip,从运行结果来看,先立刻向 ff:ff:ff:ff:ff:ff 广播 arp 报文,-b 的作用是进行持续广播,否则收到回复会转成单播模式。

    arping target.ip -s src.ip [-b] -I eth0

  • 自行的编译工具(来自 github),支持向特定 mac 地址发送 arp 报文,源 src 地址也可以自定义,也可以 ping mac 地址,

    ./arping target.ip -S src.ip -s src.mac [-t dis.mac] -i eth0

  • 上面向 dis.mac 发送 arp 报文,target.mac 不一定等于 dst.mac,dis.mac 缺省值为 ff:ff:ff:ff:ff:ff (mac 广播地址)
  • arp 请求报文主要内容:src1.mac src1.ip target.ip target.mac(未知,默认发送00:00:00:00:00:00) dst.mac
  • arp 回复报文主要内容:src2.mac src2.ip target.ip target.mac src1.mac

  • 程序提供了[-P]选项来模拟发送回复报文,但貌似没有修改报文中的 target.mac 的选项,

  • 已知目标 mac 地址,想要获取对应的 ip 地址,可以利用 icmp 协议(ping 就是采用 icmp)来探测目标 ip

    ./arping target.mac -S src.ip -s src.mac [-T target.ip] -i eth0

  • 报文内容 src.mac src.ip target.ip(未知,默认发255.255.255.255,广播) target.mac 若target收到该 icmp 报文会用自身的 ip 回复一个 icmp 报文,就可以捕获它的 ip 地址

  • 广播 ping,注意 ping 采用 icmp 协议

    ./arping ff:ff:ff:ff:ff:ff -S src.ip -s src.mac -i eth0


  • 内核参数查看

    sysctl -a|grep *

  • 内核参数修改例子

    sudo sysctl -w net.ipv4.conf.all.arp_ignore=2


  • 路由规则查看 /etc/iproute2/rt_tables

    ip rule show

  • 添加路由rules例子

    ip rule add from ip table $table_name

  • 路由表查看

    ip route show table $table_name (local/main/default)

  • 添加路由到指定的路由表例子

    sudo ip route add default via 192.168.3.1 src 192.168.3.34 dev eth0 table $table_name
    sudo ip route add 192.168.3.0/24 dev eth0 src 192.168.3.34 table $table_name


  • 临时更改grub引导下次启动的entry
    sudo grub-reboot $number

  • 关于git的一些常用操作
    git status
    git reset
    git rm README
    git rm -f README
    git log
    git log 43f2d5c
    git log --name-status
    git checkout 380e228d50822851a9e66129ff02df94228d2406 README

Shell 命令行自定义光标移动快捷键
  • Bash shell 中可以在用户目录下添加 .inputrc 文件覆盖原来的快捷键,用 bind -p 可以查看当前的快捷键绑定情况。

    #.inputrc 示例
    "\el": forward-word
    #这里 \e 指的是 "escape" ,也就是键盘上的 esc 键, 等价于 alt 键,所以 "alt + l" = "esc + l"
    "\eh": backward-word
    "\C-h": backward-char
    # \C 表示 ctrl 键
    "\C-l": forward-char
    "\C-o": kill-line
    "\C-j": next-history
    "\C-k": previous-history
    "\C-p": clear-screen
    "\C-b": backward-delete-char
    "\C-f": delete-char
    "\eb": unix-word-rubout
    "\ef": kill-word

  • zsh 中可以直接用 bindkey 查看快捷键的绑定,并用 bindkey 覆盖默认设置

    #bindkey 示例,可将这些语句加在 .zshrc 中,或者 .zsh_aliases 中
    bindkey "^H" backward-char #ctrl + h
    bindkey "^L" forward-char
    bindkey "\eh" backward-word #在 Mac 下用 iTerm 可以自定义 option 键
    bindkey "\el" forward-word
    bindkey "^F" delete-char-or-list
    bindkey "^B" backward-delete-char
    bindkey "\eb" backward-kill-word
    bindkey "\ef" kill-word
    bindkey "^O" kill-line
    bindkey "^U" backward-kill-line


  • 在 Ubuntu 中保持特定软件包版本不更新
    sudo dpkg --get-selections * > selections.txt
    #将当前所有软件包版本信息重定向到一个 txt 文件中,将不需要更新的软件包的状态由 install 改成 hold
    sudo dpkg --get-selections < selection.txt
    #将修改后的文件送给包管理器更新

  • 屏蔽服务程序开机启动
    sudo systemctl mask plymouth-quit-wait.service

  • 解除屏蔽
    sudo systemctl unmask plymouth-quit-wait.service

  • 列出开始时间
    systemd-analyze blame

  • grub 的配置文件
    /etc/default/grub

  • 查看对外 ip
    curl ip.gs

  • http 上传
    curl -i -F file=@filename ip:port

Ubuntu 下键盘重映射,在 tty 中也有效
  • 交换 esccaps lock: 在 /etc/default/keyboard 中加入
    XKBOPTIONS="caps:swapescape"

ssh reverse tunnel
  • Build ssh tunnel
    ssh -qnfNT -g -R 6666:localhost:22 -p 12345 user@server_ip
    ```bash
    - Use autossh to build tunnel when client startup(reboot),just write command below in /etc/rc.local script
    ```bash
    su -s /bin/sh username -c "autossh -qnfNT -i ~/.ssh/id_rsa -g -R 6666:localhost:22 -p 12345 user@server_ip"

Anaconda & pip
#list packages
conda list
#update all packages
conda update conda
#create independent python env called "test"
conda create -i test [python=3.6]
#list current envs
conda info --env
#activate env test
source activate test
#deactivate
source deactivate
#search package via keywords
pip search [keywords]
#list all packages
pip list
#list outdate packages
pip list -o [--outdated]
#show detail information
pip show [package name]
#upgrade package
pip install -U [package name]