2019年2月24日 星期日

sshpass 指令實現無互動登入, 適合應用在自動化腳本作業

Ref. http://jamyy.us.to/blog/2013/08/5260.html
just keep backup.

安裝 sshpass
sudo apt-get install sshpass
sshpass 操作範例
密碼直接打在 -p 參數後面
sshpass -p 'mypassword' ssh myaccount@my.linux.host
sshpass -p 'mypassword' sftp myaccount@my.linux.host
sshpass -p 'mypassword' scp myaccount@my.linux.host:/path/to/file ./
sshpass -p 'mypassword' rsync -a -v myaccount@my.linux.host:/path ./
密碼存放在檔案裡面
echo "mypassword" > ~/.mypasswd
sshpass -f ~/.mypasswd ssh myaccount@my.linux.host
密碼放在環境變數
SSHPASS="mypassword" sshpass -e ssh myaccount@my.linux.host

export SSHPASS="mypassword"
sshpass -e ssh myaccount@my.linux.host
unset SSHPASS
使用 stdin 傳遞密碼
echo "mypassword" | sshpass -d 0 ssh myaccount@my.linux.host "commands"

vi test.sh
01#!/bin/bash
02
03if "$1" "AcTiOn" ]; then
04   read i
05   echo $i | sshpass -d 0 ssh myaccount@my.linux.host "commands"
06   exit
07fi
08
09if [ -e "$1" ]; then
10   cat $1 | $0 AcTiOn
11fi
sh ./test.sh ~/.mypasswd
讓首次 ssh 連線不出現提示訊息
測試 "首次連線": 把 my.linux.host 從 ~/.ssh/known_hosts 移除
ssh-keygen -f ~/.ssh/known_hosts -R my.linux.host
此時 ssh 會出現確認訊息
ssh myaccount@my.linux.host
The authenticity of host 'my.linux.host (192.168.1.1)' can't be established.
RSA key fingerprint is 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff.
Are you sure you want to continue connecting (yes/no)? (回答 no 或 Ctrl + C 脫離)
以下方法讓首次 ssh 連線不出現提示訊息, 自動將連線目標加入 ~/.ssh/known_hosts
sshpass_command="sshpass -p "loginpassword" ssh -o StrictHostKeyChecking=no"

避免密碼記錄在 history
方式一
先停止 history 記錄
set +o history
進行 sshpass -p 相關操作
最後再恢復 history 記錄
set -o history
方式二
直接進行 sshpass -p 相關操作
清除操作記錄
true > ~/.bash_history
history -c

2019年2月20日 星期三

Nvidia-smi and CUDA Installation by runfile




Nvidia-smi
----------------------------------------------------------------
sudo apt-get purge nvidia* # Remove all old nvidia drivers
sudo add-apt-repository ppa:graphics-drivers # Add the Graphics driver PPA
sudo apt-get update
sudo apt-get install nvidia-396

sudo reboot

CUDA
=====================================
Download the run files from the following locations:


Linux->x86_64->Ubuntu->16.04-> runfile(local)

change permissions of downloaded cuda run file

sudo chmod +x <cuda-run-file>

run runfile: sudo bash <run-file-name>

There will be a few prompts
Mark NO when asked to install Nvidia Driver
Everything else should be yes

2019年1月31日 星期四

Win 10 + Ubuntu 16.04 雙系統安裝在同顆硬碟上 (UEFI OS)

前置作業
1. in Win 10: 控制台\所有控制台項目\電源選項
    -> 選擇蓋上螢幕時的行為 -> 將“開啟快速啟動”關閉
2. in BIOS setup menu: disable "secure boot"

安裝Ubuntu
1. Partition 分割 (三個就好,無需/boot)
    - /
    - /home
    - swap
2. 啟動引導器位置選安裝的Drive代號 (example: /dev/sda),不要選到partition
==========
3.裝完後重開機若無GRUB開機選單出現而直接開進Win 10:
把EFI磁區掛到G槽 (代號隨意,找個沒在用的就好)
#mountvol g: /s  
進G槽
#g:
#bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi

or (secure boot沒關的話)
#bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi

4. 進Ubuntu LiveCD => try ubuntu
連上網路
#sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
#sudo apt-get install -y boot-repair && (sudo boot-repair &)
會跳出一視窗,點擊Recommended repair

5. 重開機,會出現GRUB開機選單
==========
設定開機順序 (Set boot sequence)
#update-grub
#/gedit etc/default/grub 
修改GRUB_DEFAULT=saved
#grep menuentry /boot/grub/grub.cfg

(index從0開始)
#grub-set-default X        <- (not work for UEFI OS)
# update-grub
==========
6. Disable UTC, 避免 Ubuntu 和 Windows 時間不同而錯亂
# timedatectl set-local-rtc 1 --adjust-system-clock

2017年5月22日 星期一

Get administrator privilege in windows command line

@echo off

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

:startA

setlocal enableextensions enabledelayedexpansion
CD /D "%~dp0"
::Disabl UAC
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f

::Reboot
shutdown -r
exit /b 0

goto :eof

2016年7月8日 星期五

Robocopy backup example

SET /P _inputname= Start backup(y/n):
IF "%_inputname%"=="y" GOTO :go_backup

ECHO Don't backup!
GOTO :end

:go_backup
Robocopy D:\Documents F:\000_Backup\Documents /R:3 /e /xo /purge /xf *.tmp *.bak Thumbs.db *.pst

:end

2016年6月15日 星期三

Linux, Use dd command to backup system

Backup:
# dd if=/dev/hdx bs=1M conv=sync,noerror | gzip > /path/to/image.gz

Hdx could be hda, hdb etc. In the second example gzip is used to compress the image if it is really just a backup.

Restore:
# gzip -dc /path/to/image.gz | dd of=/dev/hdx bs=1M conv=sync,noerror

###################################################

將映像檔依照檔案大小作分割

# dd if=/dev/hdx bs=4k conv=sync,noerror | gzip -c | split -b 2000m - /path/to/backup.img.gz

The - option tells split to read from stdin. Otherwise, split would interpret the /mnt/hdc1... as the file to be split.

# cat /mnt/hdx/backup.img.gz.* | gzip -dc | dd of=/dev/hda1 bs=4k conv=sync,noerror

2016年6月6日 星期一

Bash - sdiff, compare two file

# sdiff -s file1 file2





< 代表file1有file2沒有
> 代表file1沒有file2有
|  代表file1有file2有,但是不相同
其他參數
-w 30 限定輸出字元30個
-s 只顯示不同的行

Ref. http://note.tc.edu.tw/943.html