2014-10-01 56 views
-2
  1. I have a bot machine (controlled via mobile device) which connects to the Server and fetch information from it by method os "ssh, shell script, os commands,sql queries etc" than it feed that information over the internet (private)
  2. I want to disallow this multiple connection to the server via the bot machine ONLY.. there are other machine which connects to the server which must not be affected

假設拒絕對特定的主機/ IP

Client A from his mobile acess bot machine (via webpage) than the bot machine connect to server (1st session) now if the process of this connection is 5 minute during this period the bot machine will be creating, quering, deleting, appending, updating etc

in the very mean time of that 5 minute duration (suppose 2min after the 1st session started) Client B from his mobile access bot machine (via webpage) than the bot machine connect to server (2nd session) now it will conflict with the 1st session and create Havoc...

限制

  1. Now first of all i do not want to editing any setting on the SERVER ANY WHAT SO EVER
  2. I do not want to edit the webpage/mobile etc
  3. I already know abt the lock file method of parallel shell script and it is implemented at script level but what abt the OS commands and stuff like that which are not in bash script

我的吼聲

平行ssh連接到服務器
+0

沒有什麼神奇的「操作系統命令和類似的東西」,可以實現你想要做的事情。鎖文件似乎是最明顯和最簡單的事情 – Vorsprung 2014-10-01 08:11:39

+0

因此,簡而言之,你是說在SSH會話連接之後檢查鎖文件?因爲它是爲了避免並行運行相同的Shell Shell腳本?即使如此,我的下一個問題將是如何判斷前一個會話是否被絞死或需要很長時間等等。不知道下一個連接(在掛起的會話之後)將看到鎖定文件並且將無法連接到所有連接。 ..如何處理這個問題? – user1486241 2014-10-01 08:30:44

+0

另外你讓我錯了在限制點三我提到我知道abt鎖定方法,並解釋它..但我不想在這裏使用鎖定方法,就像他們在shell腳本..所以我想知道替代方法..當它是一個geniune問題時爲什麼-1點?還請檢查我以前的評論爲下一個問題。 – user1486241 2014-10-01 09:27:55

回答

0

我假設你有ssh的帳戶單一登錄和,這在登錄時運行的腳本

到腳本在登錄

#!/bin/bash 
LOCK_FILE="/tmp/sshlock" 
trap "rm $LOCK_FILE; exit" SIGHUP SIGINT SIGTERM 

if [ $(((`date +%s` - `stat -L --format %Y $LOCK_FILE`) < (30*60))) ]; then 
    exit 0 
fi 
touch $LOCK_FILE 

當過程的ssh登錄添加這樣的事情通話結束時,刪除$ LOCK_FILE

trap聲明是鎖定的這樣一個重要組成部分,請不要使用它

「30 * 60「是一個30分鐘的超時時間,這要歸功於這個問題的答案How can I tell if a file is older than 30 minutes from /bin/sh?

+0

這是非常好的解決方案,但我需要對此有一點解釋...請解釋一下它是如何工作的(我第一次看到陷阱命令)......還請解釋是否有問題發生,比如我的第一個ssh會話掛起/花費太多時間比在這種情況下這將如何運作。我也可以殺死與新會議掛起的會話嗎?如果是,比如何(請添加代碼)?請不要介意我只是想加強它,我對此很新。 – user1486241 2014-10-02 04:36:48

+0

另外它是非常好的解決方案,我想在開始會話時製作腳本A部分和B部分的兩部分,A部分將在我們完成所有活動時運行B部分將在末尾運行它是好的或者是否有任何缺陷? – user1486241 2014-10-02 04:39:47

+0

請更新嗎? – user1486241 2014-10-03 03:26:43

0

也許嘗試使用limits.conf來爲用戶/組強制實施1次登錄的硬限制。

您可能需要定期執行cron作業來檢查並刪除任何過時的登錄。

鎖定/互斥鎖很難正確並且增加複雜性。 limits.conf中最UNIX/Linux系統的標準功能,應該是更可靠的,強調應該......

類似的問題在這裏提出:這裏 https://unix.stackexchange.com/questions/127077/number-of-ssh-connections-on-a-single-linux-machine

詳情: http://linux.die.net/man/5/limits.conf

+0

我想問問limis.conf解決方案是針對bot還是針對服務器?我們應該在哪裏實施?如果服務器比它不可能。如果機器人比它可能,但僅僅是它不是正確的解決方案。但它是在我的情況下是好的解決方案 – user1486241 2014-10-02 04:25:29

+0

這是在服務器上的設置。我將你的'限制#1'解釋爲不要做每一次登錄,而不是在服務器上只做一次。 lockfile解決方案也是對服務器登錄腳本的更改,所以它也是服務器端解決方案... – sparx27 2014-10-03 07:25:59

+0

我無法執行limits.conf,因爲同時還有很多其他ips登錄。我的意思是bot將會已經24/7登錄,但許多其他PC也會登錄,所以「我認爲」limits.conf將禁用所有登錄。還想對你說,所有用戶遠程登錄使用的用戶/組是共同的和相同的。沒有seprate user/grp。 – user1486241 2014-10-04 14:12:09