BLACK CAT PROGRAMMER

Linux command cheatsheet

Finding files

# finding a file
# 1. find hello.txt in /src
find /src -name hello.txt

# Find large files in linux
$ sudo du -a /dir/ | sort -n -r | head -n 20

Add a new user

adduser <username> --shell /bin/bash --home <home directory>

Add a user to an existing to group

usermod -aG <group name> <username>

# eg1: add user to sudo group
usermod -aG sudo <username>

Remove user from a group

gpasswd -d <user name> <group name>

# show the group of the user
groups <user name>

Creating symbolic link

ln -s <source folder> <new shortcut>

Show current memory usage

> free -h

              total        used        free      shared  buff/cache   available
Mem:           875M        141M        155M         80M        579M        592M
Swap:           99M          0B         99M

or

> free -m

              total        used        free      shared  buff/cache   available
Mem:            875         141         155          80         579         592
Swap:            99           0          99

Remove password requirement

sudo vim /etc/pam.d/common-password

remove obscure to disable complexity check

add minlen=3 to add min password length

Service control

# Start a service
sudo service nginx start

# check the status of a service
sudo service nginx statua

# stop a service
sudo service nginx stop

# list all service
service --status-all
service --status-all | more
service --status-all | grep ntpd
service --status-all | less

Posted in notesTagged

Adding routing rule on macOS

After setting up StrongSwan, everything should be done, ie you can connect to the vpn server and the subnet behind. However, in some circumstance, the local subnet mask cover the remote subnet, ie the remote subnet is 192.168.55.0/24, while the local subnet is 192.168.0.0/32.

In this case, the packet which is intended go to remote 192.168.55.1 will go to local gateway. Therefore, we have to add a custom routing rule on the local 

mac os

  • First list the current routing tables by netstat -nr
  • Remove the existing one if any route delete 192.168.55.0/24
  • Add a new rule to route the traffic to vpn server route add 192.168.55.0/24 10.10.10.1 where 10.10.10.1 is the vpn gateway
Posted in notesTagged

VPN server IP changed

平常家的ip 十年都唔轉一次,上次被大陸ban 了ip ,打電話去CS,都改不了,最後要改了router 的 mac address。但今次就無啦啦轉了一個新的IP ,令到早前set 好的vpn server 用不了。

如果IP 轉了,需要改一下conf, secret 和重新 issue 條cert

  1. 改了 /etc/ipsec.conf 的 leftid
  2. 改了 /etc/ipsec.secrets 的 ip
  3. 重新issue server cert
$sudo ipsec pki --pub --in vpn-server-key.pem \
--type rsa | ipsec pki --issue --lifetime 1825 \
--cacert server-root-ca.pem \
--cakey server-root-key.pem \
--dn "C=US, O=VPN Server, CN=server_ip" \
--san server_ip \
--flag serverAuth --flag ikeIntermediate \
--outform pem > vpn-server-cert.pem

不過要用回之前的 server-root-ca.pemserver-root-key.pemvpn-server-key.pem,不然就要重新弄過了

$ sudo cp ./vpn-server-cert.pem /etc/ipsec.d/certs/vpn-server-cert.pem
Posted in notesTagged

Useful mysql command

Installation

Install mysql on rapberry pi

sudo apt-get install mysql-server mysql-client

Check version of mysql

mysql –version

Configure db

sudo vim /etc/mysql/my.cnf

Change password

SET PASSWORD FOR 'user name'@'localhost'='new password';

For later version, use authentication_string

Create user

GRANT ALL PRIVILEGES ON *.* TO 'your_username_here'@'localhost' IDENTIFIED BY 'your_chosen_password_here';
FLUSH PRIVILEGES;

Create database

CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Querying

List all tables in the database

SELECT * FROM information_schema.tables

or

show tables

Logging

Enable SQLs logging

An alternative way to log SQLs – logging to table. It is approriate when you don’t want to restart the sql server

  1. Create a table for the log
  CREATE TABLE `slow_log` (
   `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `query_time` time NOT NULL,
   `lock_time` time NOT NULL,
   `rows_sent` int(11) NOT NULL,
   `rows_examined` int(11) NOT NULL,
   `db` varchar(512) NOT NULL,
   `last_insert_id` int(11) NOT NULL,
   `insert_id` int(11) NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `sql_text` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
  
  CREATE TABLE `general_log` (
   `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
                          ON UPDATE CURRENT_TIMESTAMP,
   `user_host` mediumtext NOT NULL,
   `thread_id` bigint(21) unsigned NOT NULL,
   `server_id` int(10) unsigned NOT NULL,
   `command_type` varchar(64) NOT NULL,
   `argument` mediumtext NOT NULL
  ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'
  1. Enable it by
SET global general_log = 1;
SET global log_output = 'table';

The log will be in the table general_log

  1. view the log by select * from mysql.general_log
  2. disable it when finished by SET global general_log = 0;

Export / import

Export database

mysqldump -u [username] -p [database name] > [database name].sql

Example:

15 2 * * * root mysqldump -u root -pPASSWORD –all-databases | gzip > /mnt/disk2/database_`date +”%Y%m%d”`.sql.gz

Import database

CREATE DATABASE newdatabase;

mysql -u [username] -p newdatabase < [database name].sql

Clone a database

mysqldump db_name | mysql new_db_name

Posted in notesTagged ,