顯示文章

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


主題 - logichom

頁: [1]
1
起因:為了不漏掉log,所以程式都是無限迴圈讀檔,這樣會造成使用率飆高以及影響系統效能
需求:能隨時監控log有無關鍵訊息(例如使用者登入),然後去觸發並執行註冊程式,如有問題能告知管理者

目前找到logwatch及swatch這兩種工具
由於還沒用過所以不知道是否符合我的需要
那還有想請教各位是否還有更適合以上需求的工具?

2
Linux 討論版 / 關於flock指令運用問題
« 於: 2015-10-29 10:11 »
在crontab中增加一支perl script
example:* * * * * root perl /root/test/test.pl

該script是要去讀log檔,然後將該log檔中的資料寫入資料庫
而我觀察到不知是否該log檔會持續增加
然後script又設定成每分鐘執行
去看程序發現一段時間後會有好多支同時執行

為了解決此問題我找到flock這個指令,可以用在crontab上
不過好奇如果程式鎖定中,會不會影響log增加?
意思是說如果script執行中,log會不會就不會增加資料?
example:* * * * * flock -xn /var/log/myserver/syslog.log -c /root/test/test.pl

3
自己架了一台server並且將認證頁面放在上面
目前認證網頁存在http與https兩種
但是從其他電腦要連上來時開啟某些網頁會被擋下
而且不讓你繼續前往認證網頁

這邊說明一下:
我的網頁會有一台DHCP server做DNS解析,所以連上來的人都會被導到我的頁面做認證,認證完才能上網。
所以不管你的最愛還是要連的網站是走http or https都可以連線。
用戶的行為是開啟瀏覽器->點擊我的最愛網頁/直接輸入網址->跳出認證頁面->輸入帳密->認證成功即可上網

然後我觀察到被擋的網頁都是如Yahoo等知名網站而且是走HTTPS的
想請問有辦法做到不管使用者連什麼網頁都可順利導向到我的認證頁面嗎?
被阻擋的原因不外乎是目標網站採用HSTS...

目前有在考慮轉用pfsense但是他似乎沒辦法像我用centos+apache靈活

4
目前建好一台Web server,上面起了apache,然後我自己寫了一個認證網頁(x.html)
但是目前有個問題就是當使用者一連上網路後會要求先認證,開啟瀏覽器後只能輸入非https(例如:https://www.aaa.com/,就不行)
及URL網址不包含/後面路徑(例如:http://www.aaa.com/b,就不行)的網頁才能順利導向到我的認證頁面

有考慮使用apache的rewrite,這樣或許可以避免上述情況但是好像沒辦法允許使用者輸入任意網址
請問這是apache的限制嗎?還是有什麼方法可以調整?

我的目標是希望能做到像校園網路認證,使用者一開瀏覽器就自動導向到認證頁面
如果不行就只能使用者輸入任意網址來重新導向了...
補充一點,我的web server後端有台DHCP server會負責將使用者連線導到我的server

5
如題,個人寫了一個script,想將它放到crontab中然後每5秒執行一次,
在這當中從網路上查了很多資料結果都無法執行,都是需要另外寫一個sh來執行,
然後就在我高興地寫完並放到crontab中執行時,主機的風扇就開始狂轉,一看CPU使用率發現飆高,
大約從40%到99%之間在跳,想說有沒有辦法不讓CPU使用率飆高的方法,也有沒有可能是我程式沒寫好?

雖然跟主題無關還是貼上來給大家看一下
失敗的crontab語法:
引用
* * * * * sleep 5; root perl /root/myscript.pl
* * * * * sleep 5; perl /root/myscript.pl
* * * * * sleep 5; /usr/bin/perl /root/myscript.pl
* * * * * sleep 5 && root perl /root/myscript.pl
* * * * * sleep 5 && perl /root/myscript.pl
* * * * * sleep 5 &&  /usr/bin/perl /root/myscript.pl

所以寫了個myscript.sh並放到crontab中執行
crontab:
引用
* * * * * root /root/myscript.sh

myscript.sh:
引用
#!/bin/bash
while true
do
 perl /root/myscript.pl
 sleep 5
done
exit 0


6
網頁技術 / 網頁抓取client端MAC address?
« 於: 2015-03-18 16:29 »
先聲明,
本人已先上網爬過文,想抓取網頁client端MAC的原因是為了要將資料送給認證伺服器做IP與MAC的綁定。

爬了許多文,本來是想直接使用PHP來達成,但是做不到,另外網路上的資料顯示說:
引用
从网上查找资料java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种。
1、通过命令方式,在客户端执行Ipconfig 等等
2、通过ActiveX的方法
3、通过向137的端口发送查询指令的方法

其實應該是4種,第4種就是使用applet,但是不管,
看了很多範例,不管是用javascript還是applet,第一種或第四種方法,
似乎都無法正確取得我所想要的MAC,而且有的還限制只能取得IE或WINDOWS下的client,
這種的我也試過但是還是不行,可能IE版本太新也不行,
種種的範例都試過還是不行,難道網頁做不到我所想要的功能嗎? 就算嵌入小程式也行。
所以來這邊跟大家討論,看看能不能找出個人遺漏的方法或是有待思考的方向,
以上,麻煩各位先進、前輩了,謝謝。

7
由於之前是使用Net::SSH::Expect這個模組
但是run了一段時間發現有些問題
所以就開始找替代的模組來使用
首先找了Net::OpenSSH
但是範例少得可憐
而且照著找的的範例實作還是失敗
另外我又換Net::SSH2這個模組
範例多了一些
但是還是卡在最基本的登入還有下指令
想請問有沒有大大熟悉以上提到的模組?
如果再不行可能要從linux script下手了...

8
Linux 討論版 / killall指令砍某一程式無動作
« 於: 2015-01-20 16:46 »
小弟目前在centos 6.5底下使用killall指令來砍某一在背景執行的程式
但是試了幾次都砍不成功
不清楚是哪裡出了問題
麻煩各位大大了

引用
[root@localhost 桌面]# ps aux | grep reboottest
root      1696 97.8  0.1 127788  3400 ?        Rs   16:14  22:51 perl /root/alex/reboottest.pl
root      2710  0.0  0.0 105396   904 pts/1    S+   16:38   0:00 grep reboottest
[root@localhost 桌面]# killall reboottest.pl
reboottest.pl: no process killed
[root@localhost 桌面]# ps aux | grep reboottest
root      1696 97.8  0.1 127788  3400 ?        Rs   16:14  23:14 perl /root/alex/reboottest.pl
root      2713  0.0  0.0 105396   904 pts/1    S+   16:38   0:00 grep reboottest
[root@localhost 桌面]#

9
Linux 討論版 / freeradius 設定問題
« 於: 2014-10-29 16:50 »
最近研究freeradius一直研究不出一個問題
上網找也沒有找到範例可參考
目標是要在accounting的attribute內安插一些自定義的參數
預設的有這些
引用
NAS-IP-Address = 192.168.10.10
User-Name = "example"
NAS-Port = 0
NAS-Port-Type = Wireless
Acct-Session-Id = "F8A9D01B3016-0A"
Acct-Multi-Session-Id = "F8A9D01B3016-0000000011"
Framed-IP-Address = 192.168.10.10
Calling-Station-Id = "F8A9D01B3016"
Called-Station-Id = "000B866D70C4"
Acct-Delay-Time = 0
我想在裡面塞入自定義的參數該如何設定?
例如:auth from = "internet"

10
程式討論版 / [Perl]單一perl程式消耗大量cpu
« 於: 2014-10-26 00:11 »
之前撰寫程式碼時只在乎perl程式消耗多少記憶體
而忽略CPU的使用情況
而目前單一一隻程式就占用CPU約65%的使用量
想請問有什麼辦法可將該程式消耗的CPU使用量降低?

為方便大家隔空抓藥
簡單說明一下該程式的功能:
1.連線至mysql資料庫建立資料表
2.開檔
3.無限迴圈讀檔
4.如果讀到關鍵訊息
5.建立與資料庫連線
6.寫入資料到資料庫
7.回到3.


11
寫了一個shell script如下
引用
#!/bin/bash
if [ps aux | grep myprogram > /dev/null];
then
   echo "process is running fine..." >> /root/xxxx/check.log
else
   echo "process is not running..." >> /root/xxxx/check.log
   killall myprogram.pl
   /root/xxxx/myprogram.pl >> /root/xxxx/myprogram.log   
fi

但是執行結果為下列
引用
process is not running...
process is not running...
process is not running...
process is not running...
process is not running...
process is not running...
process is not running...
process is not running...

crontab:
0 */2 * * * root /root/xxxx/check.sh

請問輸出log檔結果應該只有第一次才是process is not running...
其他都是process is running fine...才對吧
想請教是哪裡出了問題?

另外為什麼log顯示process is not running...
但是我下ps aux | grep myprogram
卻發現程式有在背景執行了?

但是只執行myprogram.pl
卻沒有執行>> /root/xxxx/myprogram.log?

12
照著網路教學來安裝:
http://linuxdrops.com/install-freeradius-with-web-based-management-daloradius-on-centosrhel-debian-ubuntu/

就在最後一步:
Point your browser to http://ip-address-or-hostname/daloradius

我的瀏覽器頁面卻出現403 Forbidden
想請問是哪部分設定上有問題?
有試著key以下指令:
chown -R apache:apache /var/www/html/daloradius
還是無效,請問是哪裡設定出了問題?

13
Linux 討論版 / logrotate reload問題?
« 於: 2014-05-27 10:35 »
於/etc/logrotate.d 底下新增一檔案
檔案內容如下:
引用
/var/log/device/user.log {
   daily
   notifempty
   rotate 30
   compress
   copytruncate
   postrotate
      /etc/init.d/rsyslog reload
   endscript
}

然後到了隔天後發現資料有寫入新的log檔
但是我的程式依就沒有讀到新的log檔
請問是我的程式需要重新關檔開檔?還是logrotate的語法有錯?

14
Linux 討論版 / rsyslog filter 無動作
« 於: 2014-05-21 18:35 »
於centos下的/etc/rsyslog.conf加入以下語法,重開後在去看log照樣沒有被過濾
想請問是不是哪裡設定錯了?

引用
#device syslog
:fromhost-ip, isequal, "192.168.1.X"   /var/log/device/syslog.log
if $source == '10.10.10.20' and $msg contains 'DHCPOFFER' then /var/log/device/syslog.log

15
如題,小弟撰寫了兩支程式,兩支都會去讀取相同的log檔,一支是處理,另一支是寫入到資料庫,
兩支程式都放到crontab底下,並設定一開機就啟動(@reboot /root/XXX.pl),
然而詭異的是假如今天測都正常,明天來就不正常,所謂的不正常是指程式有在背景執行,但是未被log檔觸發,
因為當log檔寫入某關鍵訊息會去觸發程式運作,明明已寫入關鍵訊息,照理應該會去觸發但是程式卻完全沒動作,
利用ps aux | grep 程式名稱 去查看程式運作結果,得到0:00,不過當我想不出原因時,
重開機就解決了,不過總不能每次遇到問題都用這招吧,以上問題有勞各位大大隔空抓藥了,感謝!

我程式是放在一台SERVER上(安裝ESXi,內有多台虛擬機,我的程式就是放在其中一台上面,安裝centos 6.5 x64)

16
由於我將某支檔案放到crontab中執行,
但是我的檔案有異動後需要重新重啟系統才能生效嗎?
我不清楚如果系統沒有重啟,這樣系統會不會繼續讀更新前的檔案?
因為每當我更改完程式後,都將系統重啟,這樣好像太麻煩了,
還是有其他方法而不必重新啟動系統。

17
跳出for while迴圈的指令是last
但是想跳出if 判斷式有這種指令嗎?
想說用exit
但是exit的結果就是跳出程式了...

會想這麼做就是因為程式都是由很多判斷式組成
假設第一個條件成立進入判斷式
但是判斷式內會去做第二個條件的過濾
如果符合就繼續執行下去
不符合就想跳出此判斷式
目前就算不符合第二個條件還是會繼續執行
感覺程式的邏輯會很怪
以上 麻煩大大了

18
想做一個登入頁面
但是帳號的地方希望可以由文字方塊+下拉選單搭配使用
例如:
user1@taiwan

user1是文字方塊輸入結果
@taiwan是下拉選單選擇結果

想請問有沒有辦法將兩者在按鈕按下後送出?
送出時是送user1@taiwan
而非送user1 + @taiwan

19
在/etc 底下直接編輯crontab檔案
新增以下指令
引用
@reboot root /root/x/x.pl
然後重開機確認已在背景執行
但是就這樣過了一天
完全沒有中斷程式什麼的
當我今天早上下以下指令
引用
ps aux | grep x.pl
得到以下結果
引用
root 1858 33.2 6. 7 282820 129588 ? R Feb10 347:42 /usr/bin/perl  /root/x/x.pl
請問上列結果中的347:42是不是指程式執行的時間?
如果是不就代表crontab在半夜的時候睡著了
到了凌晨又醒來開始工作?

我修改crontab是昨天下午3點
今天早上10點查看執行的狀況

 

20
沒注意到其它程式討論版沒開放
所以又在此重發一篇...

目前已知透過ssh去做遠端登入及下指令
但是我無法得知下了某條指令後會顯示什麼訊息
所以想把指令下下去之後回傳的訊息抓取回來

如果是用putty等軟體去做ssh
你所下的指令及回傳的結果
都會顯示在putty上
但是透過程式去連則該如何去看到這些回傳的結果?

21
Linux 討論版 / rsyslog filter 設定問題
« 於: 2014-02-05 09:54 »
在centos 5.4底下使用filter語法如下可執行
引用
if  $source == 'x.x.x.x' and $msg contains 'DHCP' then /var/log/dhcp.log
但是同樣語法到了centos 6.5就無法執行了
已確認rsyslog服務正常啟動
使用rsyslog filter的目的是想撈取我所需要的log
藉此降低log的大小
想請教不同版本是否語法也不同?
如果不同該如何設定?
因為網路上rsyslog filter的資料甚少(中英文皆search過...)

22
使用root登入然後於/etc/crontab底下修改:
SHELL=/bin/sh (修改)
0 0 * * * root /root/a/a.sh (新增)
@reboot root /root/a/a.sh (新增)

重開機後並不會在背景執行
但是手動可執行(無錯誤發生)
看過網路上的文章
嘗試過以下方法均失敗:
一、
service crond start
service crond restart
service crond reload
已確認crond服務有在執行

二、
shell檔新增
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
但是一樣不會正常執行(手動執行時錯誤)

三、
嘗試加入其他shell
例如
0 0 * * * root /root/a/b.sh
@reboot root /root/a/b.sh
卻可以正常在開機後於背景執行
是不是我的shell問題?但是在別台centos6.0卻可以正常運作...

四、
要執行的程式都確認權限為rwxr-xr-x

五、
將crontab 修改如下
0 0 * * * root run-parts /root/a/a.sh
@reboot root run-parts /root/a/a.sh
還是一樣不會在背景執行

頁: [1]