banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Làm sao để truyền password vào trong shell script !  XML
  [Question]   Làm sao để truyền password vào trong shell script ! 26/09/2012 13:58:22 (+0700) | #1 | 269723
cafecoc85
Member

[Minus]    0    [Plus]
Joined: 20/01/2007 18:36:49
Messages: 14
Offline
[Profile] [PM]
Hi mọi người,

Mình có một script lấy thông tin về CPU, Memory, Hard disk Usage OS Linux (SUSE Linux)
Mục đích topic là nhờ mọi người chỉ dẫn cách truyền tham số vào trong 1 shell script để có thể thêm nó vào crontab chạy định kỳ.
Nội dung script như sau :
#! /bin/bash
# Total memory space details
echo "Memory Space Details"
free -t -m | grep "Total" | awk '{ print "Total Memory space : "$2 " MB";}'
free -t -m | grep "Total" | awk '{ print "Memory Usage space : "$3 " MB";}'
total_mem=$(free -t -m | grep "Total" | awk '{ print $2 }')
mem_used=$(free -t -m | grep "Total" | awk '{ print $3 }')
percent1=$((($mem_used*100)/$total_mem))
echo "Memory Usage : $percent1%"
free -t -m | grep "Swap" | awk '{ print "Total Swap space : "$2 " MB";
print "Used Swap Space : "$3" MB";
print "Free Swap : "$4" MB";
}' 


Tuy nhiên mỗi lần chạy thì mình phải gõ password mới chạy được, như bên dưới :
test:~ # ssh root@192.168.1.1 'bash -s' < /home/scripts/memLinux.sh
root@192.168.1.1's password: xxxx
Memory Space Details
Total Memory space : 65207 MB
Memory Usage space : 31438 MB
Memory Usage : 48%
Total Swap space : 32773 MB
Used Swap Space : 2161 MB
Free Swap : 30611 MB 


Mình đã thử chạy thêm thẳng password trong lệnh ssh nhưng vẫn không được, nó vẫn hỏi password :
test:~ # ssh root:root@192.168.1.1 'bash -s' < /homescripts/memLinux.sh
root:root@192.168.1.1's password:
Memory Space Details
Total Memory space : 65207 MB
Memory Usage space : 31340 MB
Memory Usage : 48%
Total Swap space : 32773 MB
Used Swap Space : 2161 MB
Free Swap : 30611 MB 


Có cách nào để khắc phục việc này bằng cách truyền tham số để script tự động assign giá trị password hay không ?

Cám ơn mọi người đã đọc qua.
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 26/09/2012 17:53:29 (+0700) | #2 | 269727
Stanley_00
Member

[Minus]    0    [Plus]
Joined: 01/03/2011 06:21:38
Messages: 74
Offline
[Profile] [PM]
Bạn có thể xem "man ssh" mục AUTHENTICATION. Thân.
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 27/09/2012 08:07:40 (+0700) | #3 | 269732
[Avatar]
Ikut3
Elite Member

[Minus]    0    [Plus]
Joined: 24/09/2007 23:47:03
Messages: 1429
Location: Nhà hát lớn
Offline
[Profile] [PM] [Yahoo!]
Sao không dùng Nagios để làm việc này ?
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 28/09/2012 13:37:05 (+0700) | #4 | 269769
thuank51cc
Member

[Minus]    0    [Plus]
Joined: 13/01/2012 03:44:56
Messages: 26
Offline
[Profile] [PM]
mình nghĩ bạn có thể tham khảo về mục này ssh-keygen. không cần truyền pass
http://troy.jdmz.net/rsync/index.html
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 30/09/2012 17:22:49 (+0700) | #5 | 269803
[Avatar]
F10
Member

[Minus]    0    [Plus]
Joined: 01/12/2008 23:38:12
Messages: 89
Offline
[Profile] [PM]
Tuỳ chỉnh SSH dùng khoá bất đối xứng(không dùng passpase) để xác thực giữa 2 host là gọi lệnh remote không cần password.
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 01/10/2012 08:17:22 (+0700) | #6 | 269804
cafecoc85
Member

[Minus]    0    [Plus]
Joined: 20/01/2007 18:36:49
Messages: 14
Offline
[Profile] [PM]

Ikut3 wrote:
Sao không dùng Nagios để làm việc này ?  


Mình cũng đang test dùng Nagios để monitor, nhưng bị vấp phải lỗi không install NDOutils + Nagios để lưu dữ liệu vào MySQL Database.

Có một số thiết bị mình không được install third-party tools nên mình dùng cách này để có thể monitor đấy mà.
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 01/10/2012 08:19:07 (+0700) | #7 | 269805
cafecoc85
Member

[Minus]    0    [Plus]
Joined: 20/01/2007 18:36:49
Messages: 14
Offline
[Profile] [PM]

thuank51cc wrote:
mình nghĩ bạn có thể tham khảo về mục này ssh-keygen. không cần truyền pass
http://troy.jdmz.net/rsync/index.html 


Cám ơn bạn, mình sẽ đọc về link gợi ý của bạn.
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 01/10/2012 08:26:54 (+0700) | #8 | 269806
ruby3000
Member

[Minus]    0    [Plus]
Joined: 13/09/2012 22:39:19
Messages: 1
Offline
[Profile] [PM]
mình nghĩ do đường truyền hay phần mền khi cài
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 01/10/2012 13:04:33 (+0700) | #9 | 269810
renominh
Member

[Minus]    0    [Plus]
Joined: 20/04/2009 16:27:14
Messages: 12
Offline
[Profile] [PM]
Có cái này xài cũng được này expect
Còn muốn biết chi tiết thì thử google hoặc man coi sao.
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 01/10/2012 14:32:08 (+0700) | #10 | 269813
cafecoc85
Member

[Minus]    0    [Plus]
Joined: 20/01/2007 18:36:49
Messages: 14
Offline
[Profile] [PM]
Hi bạn renominh,
Mình cũng thử dùng expect theo link này : http://bash.cyberciti.biz/security/expect-ssh-login-script/
Tuy nhiên khi chạy thì bị lỗi này, do mình mới mò mẫm shell nên hok rành, bạn nào bít code shell chỉ mình hộ với.

#!/usr/bin/expect -f
# set Variables
set password [lrange $argv 0 0]
set ipaddr [lrange $argv 1 1]
set scriptname [lrange $argv 2 2]
set arg1 [lrange $argv 3 3]
set timeout -1
$scriptname = /tmp/memLinux.sh
$ipaddr = '203.113.168.11'
$password = kh0ngc0g!~
# now connect to remote UNIX box (ipaddr) with given script to execute
spawn ssh root@$ipaddr $scriptname $arg1
match_max 100000
# Look for passwod prompt
expect "*?assword:*"
# Send password aka $password
send -- "$password\r"
# send blank line (\r) to make sure we get back to gui
send -- "\r"
expect eof 

Khi chạy thì nó báo :
[root@template tmp]# ./expect_Memory.sh
invalid command name ""
while executing
"$scriptname = /tmp/memLinux.sh"
(file "./expect_Memory.sh" line 23) 


Cái link đến script thì ko liên quan đến nhé, vì mình đã move cái script memLinux vào cùng thư mục với expect_Memory.sh rồi.
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 01/10/2012 14:48:26 (+0700) | #11 | 269814
cafecoc85
Member

[Minus]    0    [Plus]
Joined: 20/01/2007 18:36:49
Messages: 14
Offline
[Profile] [PM]

cafecoc85 wrote:

thuank51cc wrote:
mình nghĩ bạn có thể tham khảo về mục này ssh-keygen. không cần truyền pass
http://troy.jdmz.net/rsync/index.html 


Cám ơn bạn, mình sẽ đọc về link gợi ý của bạn. 


Đã thực hiện được theo gợi ý của bạn, mình theo hướng dẫn ở link này : http://www.linuxproblem.org/art_9.html

Khá đơn giản để thực hiện.
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 04/10/2012 00:22:27 (+0700) | #12 | 269873
[Avatar]
DarkOS
Member

[Minus]    0    [Plus]
Joined: 17/04/2011 01:17:01
Messages: 26
Location: /dev/null
Offline
[Profile] [PM]
Giả sử trường hợp thế này:

1. Có một ứng dụng phục vụ cho lượng (rất rất) lớn người dùng, các server mới phải được thêm vào hàng tuần (ngày).
2. Mỗi server mới được clone ra và mật khẩu root là như nhau cho tất cả các server.

Công việc của bạn là phải setup/config các servives/apps trên mỗi server mới để thêm vào hệ thống lớn đó. Cho rằng việc setup/config này có thể được làm tự động, thời gian hoàn thành là 5 phút.

Vậy, bạn sẽ làm thế nào khi hàng ngày nhận 10 con server mới? ssh từng con, gõ password truy cập, sau đó copy public key lên từng con, rồi tiếp sau đó là chạy cái script cài đặt tự động kia.

Một ngày kia, lượng người dùng tăng lên đột biến, phải thêm vào 20 con server ngay lập tức. Thời gian để cài đặt 20 con mới kia cũng chỉ là 5 phút (chạy parallels), nhưng thời gian "ssh+gõ password+copy public key" ... sẽ là bao nhiêu? Hệ thống "cỡ bư" đó down time vì quá tải sẽ thiệt hại bao nhiêu? Mỗi ngày bạn sẽ mất bao nhiêu thời gian cho công việc lặp đi lặp lại như thế?

[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 06/10/2012 17:05:50 (+0700) | #13 | 269940
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

cafecoc85 wrote:

Có cách nào để khắc phục việc này bằng cách truyền tham số để script tự động assign giá trị password hay không ?
 

1. http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/

2. http://sourceforge.net/projects/sshpass/
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 09/10/2012 08:05:02 (+0700) | #14 | 269995
cafecoc85
Member

[Minus]    0    [Plus]
Joined: 20/01/2007 18:36:49
Messages: 14
Offline
[Profile] [PM]

DarkOS wrote:
Giả sử trường hợp thế này:

1. Có một ứng dụng phục vụ cho lượng (rất rất) lớn người dùng, các server mới phải được thêm vào hàng tuần (ngày).
2. Mỗi server mới được clone ra và mật khẩu root là như nhau cho tất cả các server.

Công việc của bạn là phải setup/config các servives/apps trên mỗi server mới để thêm vào hệ thống lớn đó. Cho rằng việc setup/config này có thể được làm tự động, thời gian hoàn thành là 5 phút.

Vậy, bạn sẽ làm thế nào khi hàng ngày nhận 10 con server mới? ssh từng con, gõ password truy cập, sau đó copy public key lên từng con, rồi tiếp sau đó là chạy cái script cài đặt tự động kia.

Một ngày kia, lượng người dùng tăng lên đột biến, phải thêm vào 20 con server ngay lập tức. Thời gian để cài đặt 20 con mới kia cũng chỉ là 5 phút (chạy parallels), nhưng thời gian "ssh+gõ password+copy public key" ... sẽ là bao nhiêu? Hệ thống "cỡ bư" đó down time vì quá tải sẽ thiệt hại bao nhiêu? Mỗi ngày bạn sẽ mất bao nhiêu thời gian cho công việc lặp đi lặp lại như thế?

 


Cái đó tuỳ thuộc vào tình hình thực tế, do số lượng server của mình ít, ko biến đổi lớn như trường hợp mà bạn đề cập. Nếu gặp t/h như thế mình sẽ tìm giải pháp khác tốt hơn. Cái cơ bản là mình chỉ hỏi cách ssh mà ko cần truyền tham số password thôi.

Cám ơn bạn đã góp ý !
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 11/10/2012 14:01:45 (+0700) | #15 | 270074
vd_
Member

[Minus]    0    [Plus]
Joined: 06/03/2010 03:05:09
Messages: 124
Offline
[Profile] [PM]
puppet, chef, cfengine
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 11/10/2012 14:02:00 (+0700) | #16 | 270075
vd_
Member

[Minus]    0    [Plus]
Joined: 06/03/2010 03:05:09
Messages: 124
Offline
[Profile] [PM]
puppet, chef, cfengine
[Up] [Print Copy]
  [Question]   Làm sao để truyền password vào trong shell script ! 12/10/2012 10:25:01 (+0700) | #17 | 270100
[Avatar]
DarkOS
Member

[Minus]    0    [Plus]
Joined: 17/04/2011 01:17:01
Messages: 26
Location: /dev/null
Offline
[Profile] [PM]
Toàn là những "thằng" nặng ký và theo mình thì nó có quá nhiều tính năng dư thừa không dùng tới, lại phải dùng thêm agent.

Mình thì dùng thằng này, thích dùng cái gì thì thêm vô mà dùng, đơn giản vô cùng, cũng không cần agent, chỉ dựa vô những cái có sẵn mà chiến thôi fabfile.org
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|