[완료] [질문] (Script) bash, expect 내의 계정정보를 숨기고 싶습니다. (바이너리화)
안녕하세요.
그간 무의미하게 반복적으로 처리하는 작업이 많았습니다.
그러던중 이번에 의욕적으로 expect를 이용한 스크립트를 작성하여
시스템간 자동화 처리될 수 있도록 구성하였습니다.
완성 후, 테스트해보니 정상적으로 잘 처리되는 것까지 확인을 했는데요.
문제는, 해당 스크립트내에 다른 서버의 계정정보가 다수 포함되어 있습니다.
bash 쉘이나 Windows batch file의 경우 바이너리 파일로 변환시켜주는 프로그램을
이용하면 이러한 문제를 처리할 수 있었는데 expect 스크립트의 경우에는 바이너리파일로
변환시켜주는 기능을 하는 툴이 없는것 같네요.
그래서....
bash 쉘에서 "expect -c"를 이용하여 스크립트 작성 후 바이너리 파일로 변환시키려고
했는데 expect 스크립트에서는 작동하는 내용이 expect -c 로 실행시에 문제되는게
있어서 그것도 실패했습니다.
(## 아래 expect 로 작성한 스크립트는 정상 작동하는데
bash스크립트는 #expect: invalid option -- h
usage: expect [-div] [-c cmds] [[-f] cmdfile] [args] 오류로 멈추네요
df -h 대신에 df 로 바꿔서 실행하면 잘 되고요
df \-h 로 해도 안되네요.)
#!/usr/bin/expect spawn ssh 192.168.0.81 sleep 0.5 send "1234\n" expect -re "root" sleep 0.5 send "df -h\n" interact
#!/bin/bash HOST=192.168.0.81 expect -c "spawn ssh $HOST" \ -c "expect -re password" \ -c "send 1234\n" \ -c "expect -re root" \ -c "send "df -h\R"" \ -c "interact"
이런 문제(보안)을 해결할 수 있는 방법이 없을까요 ?
perl등의 다른 언어로 따로 작성하는 방법외에 혹시 다른 좋은 방법이 있으면
도움 부탁드려요.
감사합니다.
참고한 문서
expect로 만든 스크립트에서 변수 값을 읽어 들이려면? | KLDP
(http://kldp.org/node/3966)
expect 스크립트를 바이너리화 할 수 있나요? | KLDP
(http://kldp.org/node/49961)
-c "send "df -h\R"" 는 -c
-c "send "df -h\R"" 는 -c send df -hR이므로
원하는걸 하실려면 -c "send \"df -hR\""
이스케이핑이 귀찮으시면 -c 'send "df -hR"'
이스케이프 문자를 따옴표 앞에 붙여 볼 생각을 못했네요^^ 감사합니다.
이스케이프 문자를 따옴표 앞에 붙여 볼 생각을 못했네요^^
감사합니다.
질문 내용에 대한
질문 내용에 대한 답변은 아닙니다만, 단순히 바이너리로 만든다고해서 정보를 숨길수 있는건 아닙니다.
문자열이 그대로 박혀있는 경우, strings로 한번 찍어보면 바로 나옵니다.
문제는 바이너리냐 스크립트냐가 아니라, 정보를 암호화했느냐 안했느냐입니다.
변환 후 Strings 등을 통해서 확인하도록 해야겠네요. 감사합니다.
변환 후 Strings 등을 통해서 확인하도록 해야겠네요.
감사합니다.
댓글 달기