2014-04-05 44 views
2

我試圖從unix客戶機訪問遠程ssh服務器。爲此,我使用expect腳本調用bash腳本從服務器日誌文件中獲取一些行。預計腳本無法將服務器日誌讀取到文本文件中

下面是我的代碼:爲access_srvr_log.sh文件

#!/usr/local/bin/expect -f 
set pass "password" 
set prompt "(%|$|#)" 
spawn ssh [email protected] 

expect "password:" 
send "$pass\r" 

expect -re $prompt 
send -- "./access_srvr_log.sh\r" 

send -- "exit\r" 

代碼:

#!/usr/local/bin/expect 

dir="/home/deployer/Desktop/McKinsey-McKinsey-AdminPanel/log" 
tail -n 100 $dir/development.log 
echo "hello" 
echo >> log.txt 

我得到這個錯誤:

./access_srvr_log.sh 
-bash: ./access_srvr_log.sh: No such file or directory 

請幫助。我已經對上面的代碼進行了很多更改,並最終到達了這裏。

謝謝。

+1

你有在服務器上的腳本?如果沒有,如果你使用'send - \'cat ./access_srvr_log.sh \'',它不會工作嗎? –

+0

在shell提示符下執行此操作:'ssh deployer @ ip ls -l access_srvr_log.sh' - 你看到了嗎? –

+1

爲什麼你的遠程shell腳本有一個預期的shebang行? –

回答

0

可以簡化下來太

#!/bin/bash 

{ 
/usr/bin/expect <<- EOF 
    spawn ssh [email protected] "tail -n 100 /home/deployer/Desktop/McKinsey-McKinsey-AdminPanel/log/development.log" 
    expect "password:" 
    send "deployer\r" 
    expect eof 
EOF 
} |grep -v "[email protected]'s password:">> log.txt 
+0

是的,我想在遠程SSH服務器上運行bash腳本。但它無法讀取第12行代碼。 – pranky301

+0

第12行meAns發送sh腳本的發送命令 – pranky301

+0

試圖理解你的要求。問題1:你是否說你想讓在遠程機器上運行的bash腳本發送輸出以期望在客戶端運行程序?問題2:你真的想'echo >> log.txt來追加空行到log.txt。問題3:還是你想在遠程計算機上獲取最後100行的$ dir/development.log並將它們追加到本地機器上的log.txt? –

0

朋友不會讓朋友使用SSH密碼。它不太安全。使用ssh-copy-id將您的公鑰複製到遠程服務器。 (它將客戶端~/.ssh/id_rsa.pub放入服務器.ssh/authorized_keys)現在您可以運行「ssh [email protected] ./access_srvr_log.sh」,並且它不會提示輸入密碼。這意味着你不再需要expect以及隨之而來的所有奇怪問題。其實it's highly recommended that you disable SSH passwords all together

使你的腳本更簡單(維護明智)做到這一點:

1)您的客戶端上運行ssh-keygen -f ~/.ssh/scriptkey(不要輸入密碼)。

2)將服務器上的公鑰部分(~/.ssh/scriptkey.pub在客戶端)放入.ssh/authorized_keys。但這一次,在您的新密鑰之前放置command="/home/deployer/access_srvr_log.sh"。這告訴服務器爲該密鑰運行該命令。

3)現在你的腳本甚至不需要指定命令,只是私鑰。 (即scp -i ~/.ssh/scriptkey [email protected]將運行該腳本)。這允許服務器在不更改客戶端的情況下更改(即移動腳本,更改腳本名稱)。這也意味着有人竊取(非密碼保護)密鑰無法登錄到服務器,但只能運行您的日誌腳本。

而且腳本中沒有可猜測的密碼。 (你正在檢查你的腳本進入版本控制,對吧?)

+0

這是非常豐富的。謝謝勇敢! – pranky301

相關問題