2016-08-06 6 views
1

나는 bash 히스토리 명령 조회의 이점을 원하지만, 여러 호스트에서 작업하고 싶습니다. 그러나, 나는 보안 정책으로 인해 대부분의 원격지에 홈 디렉토리가 없다. 그래서 ~/.bash_history가 없습니다. "export HISTFILE =/tmp/blah"는 현재 세션에서 작동하지 않습니다. 거기에 파일이 있더라도 일부 로컬 파일을 통해 여러 개의 원격지에 걸쳐 sync'ed되어야합니다.원격 호스트에 대한 bash 히스토리

솔루션은 아마 다음과 같아야합니다

.ssh/config을 통해 또는 alias 또는 어떻게 든이 모든 ssh 명령 주위에 뭔가를 실행합니다. 예 :

scp .remote-history [email protected]:/tmp/history 
ssh [email protected] 
scp [email protected]:/tmp/history .remote-history.add 
cat .remote-history.add >> .remote-history 

비슷한 기능을하는 기존 도구가없는 한.

+0

프로그래밍 관련 질문이 있으십니까? 또는 어떤 도구를 사용할 지에 대한 조언을 구하고 있습니까? – ghoti

+0

Google은 합리적인 시간에 이러한 도구 또는 도구 조합을 Google에 전송할 수 없었습니다. 그래서 프로그래밍 방식의 솔루션이 필요하다고 가정합니다. 질문에 대해 충분히 명확하지 않다고 생각되면 알려주십시오. – ilj

+0

홈 디렉토리가없는 경우 어떻게 유용한 내역 파일이 있습니까? [XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)가있는 것 같습니다. 어떤 실제 작업 (당신 생각)에이 기능이 필요합니까? – tripleee

답변

1

당신은 쉘 기능에 제안 같은 것을 포장 할 수 있어야한다 :

ssh() { 
    scp .remote-history [email protected]:/tmp/history 
    command ssh [email protected] 'HISTFILE=/tmp/history -bash' 
    command ssh [email protected] cat /tmp/history > .remote-history 
} 

몇 가지 참고 사항 :

  1. 당신은 기능 ssh 이름을하지 않아도, 만약 그렇다면 당신 그렇지 않으면 두 번째 명령과 세 번째 명령 앞에 command 접두어를 붙일 수 있습니다.
  2. -bash은 로그인 쉘을 시작하기위한 방법 일뿐입니다.
  3. .remote-history 로컬 파일을 복사하기 때문에 로컬 파일을 덮어 쓸 수 있습니다.
+0

'$ ssh user @ host -i access.key 'HISTFILE =/tmp/history -bash'는'bash : -bash : 명령을 찾을 수 없습니다.' – ilj

+0

대시를 꺼내십시오. – tripleee

+1

'bash -l'을 사용하십시오; 몇 가지 규칙이 섞여 가고있었습니다. – chepner

관련 문제