SQL Client是一個可以在安卓手機上鏈接MySQL數據庫的應用,界面挺漂亮。如果偶爾要用手機檢查一下數據庫的資料,那麼基本的查詢功能是可以滿足的,看介紹說還能導出cvs文件。不足之處也不多:1,無法通過ssh連接數據庫,只能通過數據庫的地址和端口連接。2,每條SQL都保存爲一條記錄,好像會產生很多記錄。一些複雜的操作還是通過JuiceSSH進服務器執行吧。
電腦上一直在用MySQL Workbench,感覺還可以。
教程什么的
SQL Client是一個可以在安卓手機上鏈接MySQL數據庫的應用,界面挺漂亮。如果偶爾要用手機檢查一下數據庫的資料,那麼基本的查詢功能是可以滿足的,看介紹說還能導出cvs文件。不足之處也不多:1,無法通過ssh連接數據庫,只能通過數據庫的地址和端口連接。2,每條SQL都保存爲一條記錄,好像會產生很多記錄。一些複雜的操作還是通過JuiceSSH進服務器執行吧。
電腦上一直在用MySQL Workbench,感覺還可以。
過程略繁瑣,參考了Install OpenCV 3.0 and Python 3.4+ on Ubuntu。安裝完成可在python中import cv2.
#安裝依賴及工具 sudo apt-get install build-essential cmake git pkg-config sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libgtk2.0-dev sudo apt-get install libatlas-base-dev gfortran sudo apt-get install python3.5-dev
由於我已經有python3.5的virtualenv了,所以這里就不再說了,可以参考pip3为python3安装模块。
#啓動python3.5的環境 source ~/pythons/p35/bin/activate #安装numpy pip install numpy -i https://pypi.douban.com/simple/ #下載並解壓OpenCV,github我克隆不下拉 cd ~ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.2.0.zip unzip opencv.zip wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.2.0.zip unzip opencv_contrib.zip cd ~/opencv-3.2.0 mkdir build cd build #cmake中間如有終端,可參考錯誤提示直接從web下載相關文件放於提示位置 cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=OFF \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules \ -D PYTHON_EXECUTABLE=~/pythons/p35/bin/python \ -D BUILD_EXAMPLES=ON .. #成功執行後要留意python3的環境是否正確應有類似如下字樣 -- Python 3: -- Interpreter: /home/42/pythons/p35/bin/python3 (ver 3.5.2) -- Libraries: /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.2) -- numpy: /home/42/pythons/p35/lib/python3.5/site-packages/numpy/core/include (ver 1.12.0) -- packages path: lib/python3.5/site-packages -- -- Python (for build): /home/42/pythons/p35/bin/python3 #然後就可以編譯了 make -j$(nproc) #編譯完成後執行安裝 sudo make install sudo ldconfig #查看是否安裝成功 ls -l /usr/local/lib/python3.5/site-packages/ | grep cv2 #成功的話應該會有文件出現類似 -rw-r--r-- 1 root staff 3550256 2月 17 20:36 cv2.cpython-35m-x86_64-linux-gnu.so #把cv2關聯到python環境裏 cd ~/pythons/p35/lib/python3.5/site-packages/ ln -s /usr/local/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so cv2.so #查看是否可用 python >>> import cv2 >>> cv2.__version__ '3.2.0'
時間來到 2020 年,下面哪些操作很多都不需要了。Virtual Box 的擴展已開箱可用。我還是喜歡 Firefox ESR,所以會從官網去直接下載。然後解壓就能使用。關注隱私的朋友如果想要關閉 WebRTC 可以先在地址欄輸入 about:config
然後搜索 media.peerconnection.enabled
將其值改為 False 即可。如果要裝 vlc,還是要啟用 RPM Fusion。然後就可以愉快的使用了。
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
給常用的命令起一個別名 alias,可以簡化日常的操作,對於 Fedora 可以把 alias 寫在 ~/.bashrc 文件裏。
alias p='proxychains4' alias update='sudo dnf update' #Fedora 的默認歷史記錄只有 1000 行 #下面兩行可將其改爲 5000 行 HISTSIZE=5000 HISTFILESIZE=5000
安裝完29版本後發現已經自動安裝好了虛擬機的擴展,但是共享文件夾功能是壞掉的,表現為vboxsf不識別,解決辦法如下:
#虛擬機菜單選“設備”/“安裝增強功能” cd /run/media/fred/VBox_GAs_5.2.20/ sudo dnf install elfutils-libelf-devel kernel-devel kernel-devel-$(uname -r) sudo ./VBoxLinuxAdditions.run #重啟後再執行共享命令即可 sudo mount -t vboxsf share /mnt/share #不安裝ffmpeg的話,火狐播放不了mp3和mp4 sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm sudo dnf install ffmpeg
安裝 vnstat 來統計網絡使用情況。
sudo dnf install vnstat #啓用統計 systemctl enable --now vnstat #查看網絡統計 vnstat -d vnstat -h
安裝 flameshot 一款更多功能的截圖工具。
sudo dnf install flameshot
安裝之後參考 flameshot 官方文檔綁定一下鍵盤上的 Print Screen 鍵,使用更方便。
XFCE 的話,打開設置里的鍵盤,切換到應用程式熱鍵,找到 xfce4-screenshooter -fd 1 - Print
的條目,把 xfce4-screenshooter -fd 1
改爲 flameshot gui
就可以了。
下面那堆Tricks基本都是不必要的,尤其是Flash……Xface面板自帶的網絡指示器也很好用。
以下內容有些久遠僅供參考
買了新電腦,裡面自帶兩個3.5英寸鍵盤位。於是一個硬盤裝了Fedora25一個裝了win10。先裝得Win10,這樣Fedora安裝的時候就會自動把Win10添加到啟動項中,很方便。
shadowsocks可以參考shadowsocks client and firefox on Ubuntu 12以及shadowsocks的systemd開機啟動設置可以參考Host a Debian in Win7 VirtualBox。
#增加軟件源Activate RPMFusion Repository sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm #安裝楷體和明體字體 sudo dnf install cjkuni-ukai-fonts cjkuni-uming-fonts #常用軟件 nano uget nethogs vlc mozilla-vlc gimp VirtualBox #Adobe Flash rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpm rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux dnf install flash-plugin alsa-plugins-pulseaudio libcurl #Netspeed - 網速顯示控件 https://extensions.gnome.org/extension/104/netspeed/ #TaskBar - 任務欄(其實自帶也有,可以通過安裝GNOME Tweak Tool來配置) https://extensions.gnome.org/extension/584/taskbar/ #強烈推薦安裝GNOME Tweak Tool
外接的USB無線網卡總是隨機斷線。其實wifi狀態還是連着的,但wifi標誌會變成問號,搜索後發現只要在無線設置里關閉IPV6就可以了。最後發現這個問題還是比較棘手的,搜了嘗試里很久也沒有搞定。
文件管理器的右鍵居然沒有“新增空白文件”,解決辦法是到自己的Templates(模板)文件夾下,新建一個空白文檔,右鍵就有新增文件了。
無法掛在windows的ntfs格式磁盤的時候,可以嘗試執行ntfsfix,我執行後即可正常掛在win7下的ntfs磁盤。注意此方法可能不安全。
Dell筆記本HDMI連電腦沒聲音,命令行執行pavucontrol,在配置選項卡中選HDMI即可,即使顯示未連接也沒關係。
白天看到新聞說希捷關了蘇州的工廠,我還跟Emanon討論了一番,沒想到晚上回家Fedora便發出警告,說硬盤即將報廢。這塊1.5T的硬盤是08年生產的,到現在也將近9個年頭了,已經很不錯了。
最近在看機器學習的東西,發現各種工具對Ubuntu的支持還是最好,雖然有點捨不得Fedora,但晚上還是回歸到Ubuntu一段時間吧。
可是太愛Xfce所以我還是在Fedora里玩。發現25已經不被支持了,於是決定升到26,升級很簡單:
sudo dnf upgrade --refresh sudo dnf install dnf-plugin-system-upgrade sudo dnf system-upgrade download --refresh --releasever=26 sudo dnf system-upgrade reboot
安裝完成後就是Fedora26了,VirtualBox出問題的話可以嘗試升級,然後更新虛擬機的擴展,如果還是不行,可以嘗試下面的命令載重裝擴展:
sudo dnf install VirtualBox-guest-additions kernel-devel-$(uname -r) sudo akmods sudo systemctl restart systemd-modules-load sudo systemctl restart vboxservice
內核更新後一般需要更新 virtualbox 插件,為了方便可以排除內核更新,在 /etc/dnf/dnf.conf 增加一行:
exclude=kernel*
本文更新於 2024/04/02。
需要從某網站頻繁獲取數據,但目標網站對IP限制嚴格,於是想到用vpn。市面上(淘寶)有種每次連接都會自動切換IP的PPTP VPN,很符合需求,下面就是怎麼用了,環境是CentOS6。
#安裝pptp yum install pptp pptp-setup #配置pptp pptpsetup --create v --server vpn.server.address --username USERNAME --password PASSWORD #淘寶的這種pptp vpn一般是不用加密設置的,萬一需要,可以在配置命令最後加--encrypt參數 #為了方便後續使用,我們複製兩個命令 cp /usr/share/doc/ppp-2.4.5/scripts/pon /usr/sbin/ cp /usr/share/doc/ppp-2.4.5/scripts/poff /usr/sbin/ chmod +x /usr/sbin/pon chmod +x /usr/sbin/poff #啟動pptp pon v #如果啟動成功路由表中應該會出現一個ppp0的設備 route -n #如果沒出現可以查看那裡出了問題 tail -n 10 /var/log/messages | grep ppp #這是如果把網關設置到ppp0所有流量就都走vpn了\ #但是啊,你將失去ssh連接,很恐怖吧\ #這時最好有服務器的網頁端供你連到內網進行操作\ #當然,重啟服務器也能恢復連接 #下面設置路由表 /sbin/route del -net default /sbin/route add -net default dev ppp0 #此時所有流量就pptp了,通過下面命令查看 curl http://myip.dnsdynamic.org/ #執行需要pptp的ip完成的任務 #關閉vpn poff #理論上此時應該恢復之前的路由表 #但我偷了個懶,重啟了一下網絡 /etc/init.d/network restart #從pon到重啟網絡,就完成了一個工作循環。
使用php腳本完成pptp的切換,其實就是php調用bash,兩點:運行用戶為root;命令最好寫相對路徑。
#!/usr/bin/php <?php class HttpClient{ private $ch; function __construct($cookie_jar){ $this->ch = curl_init(); curl_setopt($this->ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0'); curl_setopt($this->ch, CURLOPT_TIMEOUT, 40); curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($this->ch, CURLOPT_AUTOREFERER, true); curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($this->ch, CURLOPT_COOKIEJAR, $cookie_jar); curl_setopt($this->ch, CURLOPT_COOKIEFILE, $cookie_jar); } function __destruct(){ curl_close($this->ch); } final public function setReferer($ref=''){ if($ref != ''){ curl_setopt($this->ch, CURLOPT_REFERER, $ref); } } final public function Get($url, $header=false, $nobody=false){ curl_setopt($this->ch, CURLOPT_POST, false); curl_setopt($this->ch, CURLOPT_URL, $url); curl_setopt($this->ch, CURLOPT_HEADER, $header); curl_setopt($this->ch, CURLOPT_NOBODY, $nobody); return curl_exec($this->ch); } final public function Post($url, $data=array(), $header=false, $nobody=false){ curl_setopt($this->ch, CURLOPT_URL, $url); curl_setopt($this->ch, CURLOPT_HEADER, $header); curl_setopt($this->ch, CURLOPT_NOBODY, $nobody); curl_setopt($this->ch, CURLOPT_POST, true); curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($data)); return curl_exec($this->ch); } } function getNewIP(){ $logIPFile="/home/logIP.txt"; $res=array(); exec("/usr/sbin/pon v", $res); sleep(3); exec("/sbin/route del -net default", $res); sleep(2); exec("/sbin/route", $res); sleep(6); exec("/sbin/route add -net default dev ppp0", $res); // var_dump($res); sleep(1); // 需要一個cookie文件,創建一個空文件即可 $http = new HttpClient('/home/dump.txt'); $ip = $http->Get("http://myip.dnsdynamic.org/"); sleep(1); file_put_contents($logIPFile, date("Y-m-d H:i:s", time())."_".$ip.PHP_EOL , FILE_APPEND | LOCK_EX); $ips=array(); exec("tail -n 2 '$logIPFile'", $ips); $isNewIP=0; foreach( $res as $oldIP ){ if(strpos($oldIP, $ip) != false){ $isNewIP=$isNewIP+1; } } return $isNewIP; } function restoreIP(){ exec("/usr/sbin/poff",$res); // var_dump($res); sleep(2); exec("/etc/init.d/network restart"); } //如果IP沒有重複兩次以上就執行任務 if( getNewIP($logIPFile) <2 ){ // doYourOwnStaff(); } restoreIP(); exit(); ?>
crontab的設置,這裡不用crontab -e,而是直接編輯/etc/crontab:
nano /etc/crontab #指定運行命令的用戶為root 03 * * * * root /path/to/the/script
這樣就完工了,感謝CentOS 6下配置PPTP VPN客户端和在 Linux 命令列進行 PPTP VPN 連線。在完全不了解linux路由表和iptables的情況下,我也只能做到如此了。其實理想狀態是只轉發http和https到pptp,有空再研究吧,新年快樂!
由於政策原因,動態pptp沒那麼好買了。於是年後換了一批靜態pptp,做法就是新建多個pptp配置,然後隨機取。
$vpns = array("v47", "v11", "v18", "v12"); $rand_keys = array_rand($vpns, 2); $vpn = $vpns[$rand_keys[0]] ;
在設置過程中,遇到了unknown authentication type 26; Naking錯誤,解決辦去掉/etc/ppp/options.pptp文件中的require-mppe-128的注釋,並在修改配置文件為如下:
# written by pptpsetup pty "pptp SERVER --nolaunchpppd" lock noauth refuse-pap refuse-eap refuse-chap refuse-mschap nobsdcomp nodeflate require-mppe-128 name MYUSERNAME remotename CONFNAME ipparam CONFNAME
另一種可能的錯誤是連接的時候出現LCP: timeout sending Config-Requests,我是通過chkconfig iptables off關閉iptables解決的,反正我在內網。
上文中的/etc/init.d/network restart有時並不能恢復本機網絡,此時我們可以替換腳本中的這一句為
#網關改回原來的網關 subprocess.call('/sbin/route add default gw 172.16.2.1 netmask 0.0.0.0 dev eth0', shell=True)
時間來到2018年,pptp換成了l2tp,發現同樣的需求使用NetworkManager真是簡單。設置好l2tp連接後,一行命令即可打開關閉連接。
#passwd-file只需配置一行PSK vpn.secrets.password:YOUR_PSK #打開l2tp連接 subprocess.call('nmcli con up l2tp76 passwd-file /home/42/vpnpass.txt', shell=True) #關閉l2tp連接 subprocess.call('nmcli con down l2tp76', shell=True)
本文更新於 2018/11/09。
如果重啟後無法進入桌面環境,很可能是硬盤滿了,此時按Ctrl+Alt+F2進入命令行模式。
#查看磁盤空間剩餘情況 df -hl #如果確實是磁盤可用空間不足 #則查看是那個文件夾里有大文件,一般都是/tmp cd /tmp #以文件夾大小排序,顯示最大的15個 du -hsx * | sort -rh | head -15
釋放出200M空間就差不多可以進桌面環境了。
在頻繁使用selenium調用火狐的時候,/tmp中會出現打量類似tmpzujczqpd的文件夾,可以使用下面代碼進行刪除。
import glob,shutil def rmFirefoxTmpFile(): usage = shutil.disk_usage('/tmp') #如果磁盤可用空間小於1G則執行刪除 if usage.free<1024*1024*1024*1: #火狐產生的文件夾大概長這樣 files = glob.glob('/tmp/tmp????????') for f in files: #刪除最後修改時間10個小時以前的文件夾 if time.time() - os.path.getmtime(f)>10*60*60 : shutil.rmtree(f,True)
Fedora即使硬盤滿了,也不會無法進入桌面環境,但是桌面和軟件會出現異樣。首先是一些桌面控件比如網速計恢復了默認設置,其次會發現火狐的書籤都不見了,當然也不能在文件管理器中新建文件。一旦出現上述情況,不要去修改這些出了問題的東西,而是應該去釋放硬盤空間並重啟,這樣書籤和控件配置多半都能找回來。但如果修改了,就有很大可能丟失的風險。當然了,如果有定期備份那是最安全的了。
本文更新於 2017/09/21。
記錄下ssh連接服務器的幾種方式:
直接打開終端,以帳號密碼方式登錄,如下:
ssh -l root -p 2016 123.159.181.162
如果厭倦了每次都要輸密碼,可以通過證書方式登錄,還能增加安全性。設置方法可以參考SSH Passwordless Login Using SSH Keygen in 5 Easy Steps或SSH/OpenSSH/Keys,寫的很詳細。
還是不犯懶大概抄寫一下:
#本地,如果你沒有公鑰文檔~/.ssh/id_rsa.pub,就用如下命令生成一個 ssh-keygen -t rsa #遠程,如果沒有ssh文件夾,則創建一個 mkdir -p .ssh #本地,把本地id_rsa.pub添加到.ssh/authorized_keys文檔中,如 cat .ssh/id_rsa.pub | ssh user@remoteServer 'cat >> .ssh/authorized_keys' #遠程,檢查文檔權限,如果不是,則改為 chmod 700 .ssh chmod 640 .ssh/authorized_keys #完成
ConnectBot是一款簡單、強大、開放原始碼的SSH用戶端。增強鍵盤中方向鍵和Ctrl、Tab等鍵用起來很方便。而且它還能連local,就當作一個本地的Terminal了。
另一個選擇是JuiceSSH。其實呢從個方面(更強大的鍵盤和更便利的剪切板操作)我都覺得JuiceSSH比ConnectBot厲害,但是我還是要在一開始推薦一下開源軟件。
Termux是安卓下的另一個選擇,它不僅可以作為ssh client還可以作為ssh server哦。Termux的sshd端口為8022,只能通過密鑰登錄。
其實比putty厲害的軟件也有很多,但我只用過putty。
能用錢解決的問題都不是問題?
本文更新於 2018/02/02。
Spy Monitor是個很有用的安卓應用,可以查看當前手機的網絡連接,並且不需要root權限。地圖模式下,顯示與當前手機有連接的遠程服務器所在地,可以看到微信有時在深圳,有時在上海,OperaMini的服務器確實是在中國,但OperaMoile則在冰島等等,挺有意思的。右邊列表模式能查看當前的活動鏈接以及鏈接的詳細,咦,我已經把"冰箱"用XPrivacy禁用了網絡,怎麼還有鏈接,而且還是連到ASHBURN, US,看來要去檢查下。
centos下可以用nethogs查看當前網絡鏈接。
windows下可以用NetWorx中的端口狀態查看當前網絡鏈接。