[질문]쉘에서 만든 스크립트를 expect에서도 쓰려합니다...
제목에서도 나왔듯이 쉘에서 만든 스크립트를 갖고 expect에서 똑같이 구동을 하려고하는데 에러나 뿜어져나오고....ㅜ expect안의 언어로 바꿔보면서 하려해도 안되네요...ㅠㅠ
우선 제가 만든 스크립트입니다
1 #!/bin/sh
2
3
4
5 dat=`date +%Y-%m-%d`;
6 tim=`date +%k시%M분`;
7
8 {
9 ##buffers, cache 영역까지 감안한 실제 메모리 사용량 불러오기
10
11 mem=`free -m | grep -i + | awk '{print $4}'`
12
13
14 ##여유메모리값의 최저치 설정
15 load=2000
16
17
18 ##여유 메모리값이 최저치 설정값보다 적으면 데이터 저장
19 if [ $load -ge $mem ]
20
21 then
22
23 echo "$tim 여유메모리가$mem Mb밖에 없습니다." | mail -s "Worning" root@Email.com
24
25
26 else
27 echo "done."
28
29 fi
30 }
이 스크립트로 expect로 변환하여 ssh로 원격접속후 똑같이 구동하려고 합니다.
우선 제가 만든 expect스크립트입니다.
1 #!/usr/bin/expect
2 spawn ssh root@192.168.0.3
3
4 expect -re "password:"
5 sleep 1
6
7 send "비밀번호\r"
8
9 sleep 1
10
11 spawn "tim=`date +%k시%M분`\r"
12 spawn "dat=`date +%Y-%m-%d`\r"
13
14
15 spawn "mem=`free -m | grep -i + | awk '{print $4}'`\r"
16
17 spawn "load=300\r"
18
19 spawn "if\r"
20 spawn "[ $load -ge $mem ]\r"
21
22 spawn "then\r"
23
24 spawn "echo "$tim 여유메모리가 $mem Mb밖에 없습니다.지금당장 확인하세요." >> /memlog/nomemory_$dat\r"
25
26 spawn "else\r"
27
28 spawn "echo "$tim 여유메모리가 $mem Mb입니다." >> /memlog/memory_$dat\r"
29
30 spawn "fi\r"
31
32 sleep 1
33 send "exit\r"
혹시나해서 expect가 원격접속으로 하여 이루어지는것이라 그냥 커멘드창에 if문을 쓰고 했을때도 되는것을 생각하여 spawn을 send로도 고쳐서 해봤었는데 여기서도 오류가 뿜어져나오고있습니다...ㅠ
변수지정(?)이 문제인건지... 자꾸 안되네요 ㅠㅠ
저걸 변환시키는 방법좀 알려주시길 바라겠습니다 ㅠㅠ
댓글 달기