顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - dark

頁: [1] 2 3 ... 50
1
Linux 討論版 / 分享 watch script
« 於: 2017-03-10 23:55 »
常用 watch 指令
偏偏 watch 不能顯示中文
剛剛終於決定狠心寫一個 script

想想對 watch 的不滿 , 還有 ..
1. clear 完 , 資訊總在螢幕最上方 => 所以改最下方且不 clear
2. 過多資訊總是 head 前幾行 -> 塞指令為什麼不加 tail => 不管 ... 加個 tail
3. 因為要捕捉 ctrl-c , 第?次再看很難的 trap 指令 , 這次只瞄幾秒 , 突然覺得好簡單

這決心是聯想到上此討論 head 與 tail 中斷是誰決定
所以 script 中那行
while true ;do echo ;done | head -$maxn
算是起點吧 ...

代碼: [選擇]
#!/bin/bash
# 中文

hhelp(){
echo $(basename $0)'
-n 幾秒循環
-head 超過螢幕用 head 取樣
-tail 超過螢幕用 tail 取樣

-h|-help|--help
'
exit
}

HT=/usr/bin/head
sec=1
while [ "$1" != "" ] ; do
case $1 in
-n)
sec=$2
shift 2
;;
-head)
HT=/usr/bin/head
shift
;;
-tail)
HT=/usr/bin/tail
shift
;;
-h|-help|--help)
hhelp
;;
*)
cmd=$cmd' '$1
shift
;;
esac
done

trap 'tput cup $(tput lines) 0;echo exit;exit' 1 2 3 15

echo '-------------------------------------------------------------'
echo '執行 '$cmd' / 每 '$sec' 秒'
echo '-------------------------------------------------------------'

maxn=0
while true;do
monitor=$(tput lines)
l=$(($monitor-3))
ans=$(eval "$cmd" | $HT -$l)
n=$(echo "$ans" | wc -l)
if [ $n -ge $maxn ] ; then maxn=$n ; fi

mysc=$(($monitor-$maxn-1))

while true ;do echo ;done | head -$maxn
tput cup $mysc 0
for((i=$mysc;i<$monitor;i++));do
tput cup $i 0
tput el
done

tput cup $mysc 0
echo "$ans"
tput cup $monitor $(tput cols)
sleep $sec
tput cup $mysc 0
done


2
database 討論版 / 請問 sqlite ROWID 問題
« 於: 2017-03-03 09:40 »
因為常用 VACUUM
使得刪除行後 , 所有資料都往前靠齊

若想某筆資料插入到某一行位置
不知該麼做 ?

謝謝!!

目前重寫新 table 解決

3
您的問題很廣阿 ...

是不知取得特別字串該如何處理 ?
還是怕別人塞特別字串要預防 ?

若您是開發者 , 又是怎樣的習慣 ?
小弟連到資料庫也不曾用 query() 之類函式
都用 exec 傳 ... 沒注意分號
還多一項給人取得 root 權限的機會


4
請教您 try 成功的解法是...?
小弟的話 .. 是 .. 右鍵 -> 翻譯成中文

5
的確如 twu2 大大所說的
若走 pop imap http 等方式 , 就要有該帳號的密碼

如果朝 HA , backup 思考 ... 又會抓不該抓的帳號
root 權限 ssh 抓 mailbox 又有時間差 (抓完 MD5 改變就重抓)

既然只是不同部門 , 叫他們 relay 或 mailbasckup 過來比較方便吧

6
您是在問 sql injection 嗎 ?


7
該跳脫的字符 , 開發者都替咱們想好了

所以只要把你想要的結果塞進變數
再交給函式 "一個變數" 就行了

... 小弟也常基於方便 , 臨時 , 懶得改
在函式那些欄位拼湊字串

8
Linux 討論版 / Re: squid proxy 驗證設定請教
« 於: 2016-12-15 01:20 »
小弟不知 NTLM NCSA 是什麼
不知有沒有 IP 分享器支援 ... 會客室各放一台

不然只好用 PC , 開一層客戶用 squid (兩層)



9
Linux 討論版 / Re: 无法安装centos7
« 於: 2016-12-01 23:59 »
您的眼睛會放雷射光嗎 ?
... 螢幕上投影出你學 x-men


你原先的U盤開機 , 裡面有引導程式
這要看作者提供支援哪些OS , 哪些安裝方式而定

一般 iso 是燒成光碟
這類引導程式至少要有虛擬光碟功能 , 才能掛載 iso

這與將 iso 前幾軌開機資訊  轉成  硬碟/U盤 bootloader   不同


10
有 MS 用 cifs 最方便 ...
有時要變更沒分享的資料夾
就得用上 sshfs ... (看影片一樣不 lag)

沒用過 qnap
不過那是特別設計過的 ... 看不到他的 source code

若站在 "使用上應用" 的角度
您的需求若是認證後 , 大家可以隨意寫入
那搭配 cifs 即可 ..

將 home 透過 cifs 掛到本機 home1
nfs 就操作 home1

若有個別寫入權限
那在多個如 ldap , nis 當中介 , 放棄本機帳號方式
這時你可選擇利用 auto 機制掛 cifs 區 (但可能需偷改 mount)
或比對 samba 與 ypserver 間帳號差異 , 另寫新增帳號程式 (改變 useradd 習慣)

想法歸想法 ... 實現過程要克服不少


11
不知修改 source code 難度 , 升級版本時是否困難 ...

若依您敘述 ..
小弟會改採取再加兩台 linux 電腦 , 當作 storage 的 interface (auto mount)
一台供 M$ , 一台供 unixlike 當 client 連現介面

未必須要實體主機 (不知 chroot 能否達到)

不過若在公司環境
實體可以增加 interface
不失為高效配置

12
系統安全討論版 / Re: 咨询:网络安全
« 於: 2016-10-30 18:20 »
您貼錯版了 ...

網路安全 , 系統安全 , 資訊安全 ... 其實很難分界

由於 ARM , 嵌入式 ... 等架構
未來會越來越多不同種類的封包 , 協定出現在網路上

您似乎剛接觸
不如就從身邊容易拿到的硬體著手
了解該硬體的系統行為 , 網路行為

之後試著架設一台供他服務的 server
觀察兩者間現象

學習他人的技術手段
可能只有在 "表演" 時能加分
累積足夠 "能運用的觀念"
在看到他人不同技巧時
才能感同身受的還原他眼中的現象

程式也一樣 , 選一種學
當看到不同語言時 , 也該能思考作者邏輯

系統也是 ...
新系統 , 新語言會越來越多 ...

13
Linux 討論版 / Re: 時間_絕對秒數_心得
« 於: 2016-10-17 22:55 »
不好意思 附件舊版 date 重傳
原來 lib 壓完超過 512
必須用 7z



14
Linux 討論版 / 時間_絕對秒數_心得
« 於: 2016-10-17 22:48 »
發問過兩篇有關時間的問題
http://phorum.study-area.org/index.php/topic,71853.msg343960/topicseen.html#msg343960
http://phorum.study-area.org/index.php/topic,69998.msg340076.html#msg340076

以下整理兩篇文章的心得
將一些之前錯誤的觀念更正

若觀念中 , 還有錯誤 , 還請多多指教


一、先來結論跟文獻觀念:

GMT=Greenwich Mean Time=格林威治標準時間
太陽(天文)測量計算(倫敦)

UTC=Coordinated Universal Time=國際協調時間
原子共振頻率 (兩千年誤差一秒鐘) , 1980 起
以上兩縮寫是 "方法"

時區代號(其餘)
CST=Central Standard Time=中原標準時間
CST=GMT+8=UTC+8

PST=Pacific Standard Time=太平洋標準時間
PST=GMT-8=UTC-8


1. linux 下 : /etc/sysconfig/clock
ZONE="Asia/Taipei"
UTC=true
其中 ZONE 參數只是給人看的 。 UTC , GMT 即在此定義
而 date 參考的 "資料庫" 則是 /etc/localtime
範本在 /usr/share/zoneinfo/ (注1)

2. 絕對秒數又常被稱 unix time
=> linux 下其實不是 年-月-日 時:分:秒 在記錄 , 而是只有這個絕對秒數在跑
=> 任何時區下 date +%s 的值 , 都是相同值 => 寫資料時直接取絕對秒數即可 , 不需考慮時區

3. 台灣 = UTC+8
所以 , 台灣時間-8小時 = 地球(格林威治地點)的時間



二、 linux 指令 /bin/date
1. -u = utc (此參數很多餘) help 中是指使用 UTC , 實際作用翻譯成 "瞬間移動到倫敦"
=> date +%F_%T => 請問系統 , 現在日期時間 ?
=> date -u +%F_%T => "瞬間移動到倫敦" , 再 .. 請問系統 , 現在日期時間 ?
=> date --date="2016-10-17 21:00:00 10 min ago" +%F_%T  => 請問這時間是?
=> date -u --date="2016-10-17 21:00:00 10 min ago" +%F_%T  => "瞬間移動到倫敦" , 再請問這時間是?

2. --date (info 中提到 ago 用於計算過去時間)
=> 若只單純 -2 day 或只有 -2 hour , 這時負號不至於出錯
但在 --date="2016-10-17 10:00 -2 hour" 有指定時間時 , 使用負號會出錯


三、日光節約 , 注1 , 舊版 date , 實驗


舊版指的是 , 舊系統中找到的 : date 2.0.11 (附件) , date 4.5.3


日光節約
1945-05-01 1946-05-01 1947-05-01 1948-05-01 1949-05-01 1950-05-01 1951-05-01
1952-03-01 1953-04-01 1954-04-01 1955-04-01 1956-04-01 1957-04-01 1958-04-01
1959-04-01 1960-06-01 1961-06-01 1974-04-01 1975-04-01 1979-06-30
這些日期會出錯 :
[root@newsys]# date --date="1979-06-30" +%F
date: invalid date ‘1979-06-30’
加上 -u 則不會 (因為瞬間移動到倫敦了)
[root@newsys]# date -u --date="1979-06-30" +%F
1979-06-30

這是因為 :
[root@newsys]# for i in {1..4} ; do date --date="1979-06-29 23:59:57 $i sec" +%F_%T_%s; done
1979-06-29_23:59:58_299519998
1979-06-29_23:59:59_299519999
1979-06-30_01:00:00_299520000
1979-06-30_01:00:01_299520001
=> 1979-06-30 這天小時沒有0 , 而 --date="1979-06-30" 其實是 --date="1979-06-30 0:0:0"
=> -u 瞬間移動到倫敦才問 , 那時區的資料庫中 , 是節約其他小時的

到舊版系統中 :
[root@oldsys]# for((i=1;i<5;i++));do date --date="1980-06-29 23:59:57 $i sec" +%F_%T_%s; done
1980-06-29_23:59:58_331142398
1980-06-29_23:59:59_331142399
1980-06-30_01:00:00_331142400
1980-06-30_01:00:01_331142401
=> 修正秒數在一年後
=> 同樣是 Asia/Taipei 的資料庫 , 但 10 年前的系統 , 卻是在 "滿現象一年" 做修正
=> 此萬年曆 , 並非 "方程式" , 所以將來也會依宇宙的改變而改變


證明:
1. 將舊版 date , 複製到新版系統使用
[root@newsys]# for i in {1..4} ; do date_2.0.11/bin/date --date="1979-06-29 23:59:57 $i sec" +%F_%T_%s; done
1979-06-29_23:59:58_299519998
1979-06-29_23:59:59_299519999
1979-06-30_01:00:00_299520000
1979-06-30_01:00:01_299520001
=>相同資料庫 , 節約的小時相同

2. 在新系統中 , 改變時區資料庫
[root@newsys]# cp /usr/share/zoneinfo/America/Chicago /etc/localtime
[root@newsys]# date --date="1979-06-30" +%F_%T_%s
[root@newsys]# 1979-06-30_00:00:00_299566800

3. 舊版防呆 , 體貼設計 :
將時區還原台北
[root@newsys]# date_2.0.11/bin/date --date="1979-06-30" +%F_%T_%s
1979-06-30_01:00:00_299520000
此為 version 2.0.11 的防呆設計 , 直接跳到沒刪除節約的時間

[root@newsys]# date_2.0.11/bin/date --date="1979-06-$((30+90))" +%F_%T_%s
1979-09-28_00:00:00_307292400
舊版自動運算的體貼設計



特地找到舊版 , 因為自動運算消失後 , 曾適應一段時間 (懷念)

而小弟之前那兩篇 , 正因不了解 -u 與絕對秒數
一些主機會登入下指令的 , 就被我偷換 /bin/date 成 -u

不過舊版 date 日光節約的防呆也真的很實用

請問 :
如附件壓縮檔 , 是 32bit 系統程式 , cp 到 64 bit 可用 , /lib/ 下也沒有那兩個 lib 衝突 , 是否真不會影響原 64bit 其他程式 ?

是否有發現哪個 unix-like 64 bit 的 date 有此防呆設計 , 或有 source code 可用 ?


(附件超過 512 k , 分兩檔)
bin/date

lib/libc.so.6
lib/ld-linux.so.2

15
Linux 討論版 / Re: use strict
« 於: 2016-10-11 16:42 »
您恐怕是直接 ./這個檔案吧

這檔案第一行不是
#!/usr/bin/perl

所以應該是給人加 include 進去用的
也就是這幾行常用到 , 所以獨立成檔案引用 , 就能少打程式碼

只是巧合的是 , linux 系統中沒 use 命令 , 卻有 open 跟 while

perl 應該不可能看不懂 use 關鍵字的
(只是 .. use 能放中間嗎 ? ... 不知)

把第一行 bin/perl 的 pl 檔列出來
grep 'bin/perl' *.pl
試著執行看看那些檔案吧

16
雜七雜八 / Re: 請問絕對秒數 unix time
« 於: 2016-10-11 16:23 »
的確各機器時區沒統一
原來小弟也曾有選擇英文安裝的勇氣 ...

思考許久
小弟想明白了 ..
"絕對" 的意思應該就不加上時差
這樣各機器才能從不同時區取得資料後
換算成各地時間

不然就需要多加個欄位 , 註明寫這筆資料時 , 在什麼時區


17
原來如此 ... 了解了


clang++ -O3 -std=c++14 -o ${CCE} $1
改為自己習慣編譯的方式即可


18
雜七雜八 / 請問絕對秒數 unix time
« 於: 2016-10-11 01:41 »
小弟有些資料會多加 unix time 欄位
雖一直沒用到 , 但今天發現
這些欄位有些 +8 hour , 也些沒有 -> 即 +0 hour

思考了很久 , 到底是該不該 +8 小時了 ?


只知
絕對秒數是從 1970-01-01 00:00:00 算起
有分時區嗎 ?

謝謝 !!



睏了 ... 差點貼錯版 ...  :P

19
這是什麼觀念與技術 ?

照貼試了一下

/usr/bin/env: clang++: 沒有此一檔案或目錄


20
Linux 討論版 / Re: Perl脚本运行问题
« 於: 2016-10-11 01:16 »
是上次 genemark-ES 的問題嗎 ?

小弟英文不好
不過上次您那個網站
似乎是說 genemark-ES 那些 software 都只是 lib
需要安裝 Braker-1 才能呼叫
(英文差 ... 不知對不對)


21
搜尋一下才知道
kali linux 是 debain 改的

對 debain 不熟
不過 darkranger 所提的第二點 , 是大多數此類問題關鍵

有些改過的系統連 useradd 都是重寫過的 , 那就要從 profile 問題找起了


不過您說 "有時執行完 ... 會消失"
那或許該注意一下是不是其他版 kali 也都如此

22
Linux 討論版 / Re: ubuntu下安装genemark-ES
« 於: 2016-09-28 12:08 »
您可以貼下載的連結

不懂這類軟體的人
說不定也可以給您意見


23
使用 tarball 安裝 (vm 硬碟先鎖住)
應該是目前最新版本了

仍然是有錯
所以另外又裝一台同樣 centOS 6.2 ... 一樣會錯

看來是 centOS 6.2 問題了

目前看來 , 只能將 write 動作再丟一次迴圈 , 寫入成功才 break 了

代碼: [選擇]
[root@MDS77 2016trygoogle]# sqlite3 -version
3.14.2 2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6
[root@MDS77 2016trygoogle]# sh w10s.sh & sh r10.sh
[1] 19956
read err
write err
read err
read err
r10.sh end
[root@MDS77 2016trygoogle]# 299

[1]+  Done                    sh w10s.sh
[root@MDS77 2016trygoogle]#


24
感謝 twu2 大 ...
應該是版本問題

在上述 script 中 , 增加執行錯誤回傳 error
我的系統有
centOS 5.x => 3.3.6 => 只有 read 會回傳 error
centOS 6.x => 3.6.20 => read / write 都會 error

看目前 centOS 7.x 是 3.7 版本
但 yum 在 6.x 中最多就升級到我目前這版本
而相依性也非常多 , 正在煩惱中 ...


ps ..
都是虛擬OS , 原本還懷疑 vmware
而不求效率給 1 cpu , 舊硬碟的 , 甚至連 read 都沒 error 現象

25
如下 bash , 連續寫入約 10 秒

w10s.sh
代碼: [選擇]
#!/bin/bash

rm -f tmp.db3

sqlite3 tmp.db3 'create table tmptb(f01, f02, f03)'

for i in {1..999} ; do
    sqlite3 tmp.db3 "insert into tmptb values($(date +%s),$(date +%N),'xx')"
done

sqlite3 tmp.db3 "select f01 from tmptb" | wc -l

r10.sh
代碼: [選擇]
#!/bin/bash
sleep 3
for i in {1..10};do
    sqlite3 tmp.db3 "select f01 from tmptb limit 1" > /dev/null
done
echo $0 end



將 w10s.sh 丟背景執行 , 並執行 r10.sh
代碼: [選擇]
# sh w10s & sh r10.sh
[1] 6342
Error: database is locked
Error: database is locked
Error: database is locked
r10.sh end
# 997
[1]+  Done                    sh w10s.sh

由上可知 , 就算只有讀取 , 仍會 lock
造成寫入少了 3 行

請問 sqlite3 若只有讀取 , 該如何不 lock 呢 ?


26
資訊這麼少 ...
這問題要了解這些設備 , 還有貴公司網路環境才能回答 ...

若要添購設備
如果貴公司有辣妹 , 可以添購一台 IA 仿機器dark人
這是一台最新概念的新產品 ...
模仿機器的人 ...
可以處理資訊不足的問題
但只接受辣妹的指令 ...

27
小弟若是 MIS ... 應該會問 RD 需要怎樣的環境
照做後事實回答 ...

小弟若是 RD ...
若能 ssh 進去租賃的主機最好
若不能 , web 也該能執行 system() , exec()
若不能 scp 就上傳一隻 scp
想辦法把整個 OS 都 copy 回來
(若是租的是共用主機 , 賺到其他客戶的 DB  ;D)
甚至直接 dd /boot 回來開機


若無關公司
仍會想辦法 copy 整個 OS ...

然後先比對新舊 OS 中 , DB , httpd 執行時的環境變數
還有問題 ... 應該是套件或新功能 (新功能 ? open source 很少不向下相容的)
先抓出 php 中 db 指令由系統執行看看
最後才抓 php 使用到的函式有哪些

open source 太廣了 , full install 都有沒收錄的套件
找出真正需要的 ... 那就由你決定 OS 跟版本了


難道是租賃主機防止客戶外流的手段 ...

28
開開玩笑啦 ...

不過累積點讓人看的經驗
應該不算惡質吧


29
小弟的 linux firewall 是 redhat 7.2 , 卻沒有 firewalld ...  ;D
雖然只剩一條 adsl , 但也沒去移除設定
10幾年來仍然速度快 , 省資源


不過 redhat 使用 zone base 真的讓小弟滿訝異的
想不到 policy base 竟然打輸了 ... (個人比較喜歡 policy base 啦)


但目前的 zone , policy 似乎越來越相近 ...
記得以前 zone base 須定義各 zone 的 pialoty(權重等級,一定拼錯了)
而 zone 的好處是 , 兩兩 zone 間的關係 , 可視為單獨一台 firewall 思考
這一來使得邏輯上減少很多干擾

但 fortigate 的出現 , 不但能zone,policy 共存 , 還能實體切成多個虛擬 firewall
接觸後小弟不禁思考 , 其實 policy 有著 zone 觀念優點並不難
只需在註解上標示該 policy 作用於哪個 zone , 變動時 grep 出來相關者即可
(以上只是個人思考 , 或許與事實不符)


大略瀏覽了一下網大貼的連結
也稍微搜尋了一下 iptables 與 firewalld 差異
有一點疑問的是 ..
官方說 iptables rule 變動時會造成斷線 , 這點應該是不會才是吧?
除非官方的觀點是 , 變動  /etc/sysconfig/iptables 再 iptables-restore


至於樓主的問題 ..
小弟自己的 firewall 很久沒變動了
但瀏覽了上述連結後 , 只覺得不過是 iptables 指令變 firewall-cmd
iptables 改變的是記憶體
firewall-cmd 改變的是設定檔 , 所以需要 reload ??
(那為何有 firewall-offline-cmd)
而那些 xml 是給管理程式看的吧 ??

如果變化真的就這麼簡單
那就缺還沒找到如同 iptables-save 般能一口氣列出所有訊息的指令
(複製貼上能少記很多蝌蚪文...)

大略流覽文件而已 , 還沒玩過 centos 7 ...

30
好多沒接觸過的新觀念 ...

不過以小弟的例子
有些開機執行程式
啟動前須要向其他主機要到資料

(靠 ... 打雷劈到我 ... 我頭頂 ... 窗外冷氣有看到尖端放電特效)

回題 ...
(
while $(sleep 1);do check 機制 && break ;done
這類程式
) &
不是這類的程式

不丟背景卡在這 , 就不會交到 tty 手上了


頁: [1] 2 3 ... 50