리눅스 관련 질문입니다( 동일작업 반복을 효율적으로 하는 툴 질문 ).

jungwook의 이미지

안녕하세요??

제가 동일한 작업을 반복하는데, 툴을 이용해서 좀 효율적으로 할 수 있나 싶어 질문드립니다.

지금 우분투를 사용중인데 터미널을 5개 정도 띄우고 ssh로 접속해서 어떤 프로그램을 실행시켜서 동일한 작업을 합니다.
즉 터미널에 들어가는 인풋이 같다는 말이죠.

이걸 좀 효율적으로 하고 싶은데 지금은 그냥 터미널 5개 띄우고 하나의 터미널에 어떤 인풋을 주고 드래그해서 마우스 휠을 이용해서 복사하는 방식을 이용하는데요.(무식하죠.)

좋은 방법 없을까요??

expect + perl 를 쓸려니 나중에 다른 터미널의 어떤 조건을 보고 제가 직접 타이핑을 해야되서 무리일듯합니다.

aero의 이미지

tj의 이미지

.screenrc에 시작 명령들 적을 수 있습니다.

$ cat .screenrc-monitor
.......
split
split
split
split
split
split
screen openvpn /etc/openvpn/######.conf-noauto
focus down
screen bash -c "while true; do ssh ### vmstat -S M 1; sleep 1; done"
focus down
screen bash -c "while true; do ssh ### vmstat -S M 1; sleep 1; done"
focus down
screen bash -c "while true; do sensors; sleep 5; done"
focus down
screen bash -c 'while true; do (ssh ### "while true; do sensors; sleep 5; done"); sleep 5; done'
focus down
screen bash -c 'while true; do (ssh ### "while true; do sensors coretemp-isa-\*; sleep 5; done"); sleep 5; done'
focus down
screen bash -c "while true; do scheduler -vv; done"
focus down
$ screen -c .screenrc-monitor

jungwook의 이미지

그런데

split
split
split
split
split
screen bash -c "ssh cho@xx.xx.xx.xx"
focus down
screen bash -c "ssh cho@xx.xx.xx.xx"
focus down
screen bash -c "ssh cho@xx.xx.xx.xx"
focus down
screen bash -c "ssh cho@xx.xx.xx.xx"
focus down
screen bash -c "ssh cho@xx.xx.xx.xx"
focus down

$screen -c .screenrc-monitor

실행을 하고 password를 넣으면 서버에 잘 접속합니다.
server:~$

이제 여기서(서버내) 다른 디렉토리로 이동하고 해당 디렉토리의 프로그램을 실행하고 싶은데, 그것도 가능한가요?
또한 위의 스크립트를 실행하게 되면 하나의 윈도우에 5개가 split되어서 나오는데 한번에 같이 내용을 입력해주는 것이 가능한지 궁금하네요.

감사합니다.

tj의 이미지

ssh에게 바로 커맨드 실행하라고 하면 되지 않나요? 같이 입력은 모르겠습니다.

jungwook의 이미지

"ssh에게 바로 커맨드 실행하라고 하면 되지 않나요?"

이게 무슨 말인가요?? ㅡㅡ;

답변 감사드립니다.

powersys의 이미지

그냥 구체적으로 질문하시면 쉽게 답을 얻으실꺼 같은데..

질문자체가 좀 불명확하군요..

일단 쉘스크립트 조금작성해두셔도 금방해결될일로 보입니다.

더구나 궂이 터미널여려개안띄워도 백그라운드 작업도 가능합니다.

jungwook의 이미지

먼저 ssh로 서버에 접속합니다.
이건 위에분의 도움으로 split를 하니 다섯개의 창에 모두 ssh 접속을 하더군요.
이제 접속한 서버에 passwd를 입력하고 난 후

server> cd ~/running_program
server> ./run_program input input

이런식으로 프로그램을 실행시키는 겁니다.
물론 나눠진 창 다섯개에서 모두 이런식으로 서버의 해당 디렉토리로 이동하고 프로그램을 실행하는 거죠.

"일단 쉘스크립트 조금작성해두셔도 금방해결될일로 보입니다."
=> 쉘스크립트로 서버와 interactive 할 수 있나요? 패스워드 입력도 넣어주어야되는데..

"더구나 궂이 터미널여려개안띄워도 백그라운드 작업도 가능합니다."
=> 이렇게 실행시킨 프로그램을 나중에 다른 터미널의 결과를 보고 다시 인풋을 입력해주어야 되서 백그라운드 작업은 힘들꺼 같습니다.

답변 감사합니다.

bootmeta의 이미지

삭제.

tj의 이미지

바로 실행은 ssh뒤에 그냥 명령을 적으면 되고, 암호는 key pair로 로긴하면 필요없고, 때려죽여도 패스워드를 입려해야겠으면 expect로 로긴, 커맨드 실행 후 interactive로 가도록 스크립트 만들어서 하면 됩니다. screen, ssh, bash, expect 맨페이지들만 읽으시면 정보는 충분하리라 생각합니다.

jungwook의 이미지


ㅎ 늦은 시간인데 친절한 답변 감사합니다.
좋은 주말되세요.

jungwook의 이미지


split
screen bash -c "ssh <a href="mailto:cho@10.20.12.43" rel="nofollow">cho@10.20.12.43</a> (서버내 프로그램 실행)"
focus down
 
split
screen bash -c "ssh <a href="mailto:cho@10.20.12.43" rel="nofollow">cho@10.20.12.43</a> (서버내 프로그램 실행)"
focus down

이런식으로 실행하였고, ssh-keygen 을 이용하여 ssh 는 passwd입력없이 로그인되도록 하였습니다.

궁금점은 서버내 실행된 프로그램에서 장시간 동작후에 "ctrl+c"를 눌러서 추가적인 입력을 주어야되는데, 여기서 프로그램이 중단되고 [screen is terminating] 되어버리네요.
screen bash -c "ssh cho@10.20.12.43 (서버내 프로그램 실행)"

이 문장이 종료되는 것 같은데, 혹시 방법이 있을까요??

jungwook의 이미지

split
screen bash -c "expect파일"
focus down

그리고 스크립트에서 원하는 작업이 끝나면 $exp->interact() 함수를 쓰니 쉽게 해결이 되네요.
ㅡㅡ; 근데 스크린이 여러 창으로 나뉘니 스크롤을 만들어야 되는데 이것도 잘 안되네요.

그리고 최종 목표는 두 개의 expect 파일끼리 서로 통신을 하는것인데, interact, finterconnect될 듯한데 ㅡㅡ;

즉, expect를 이용하여 작업 A에서 작업을 수행
곧 expect를 이용하여 작업 B에서 작업을 수행
작업 B에서 특정 문자가 나오면 작업 A에 명령을 수행하는 것입니다.

즉 서로 다른 터미널끼리 통신하는 것이네요.

힌트 좀 주세요.

powersys의 이미지

뭐 간단하게는 그냥 로그파일처럼 떨어트리시고.. 다른터미널에서 읽으시면되자나요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.