이것은 하나의 퍼즐입니다. 명령 줄에서 명령을 실행하여 원격으로 파일을 복사하면 완벽하게 작동합니다. Hudson을 호스팅하는 서버의 스크립트에서 동일한 명령을 실행하면 명령 줄에서 hudson으로 작업을 실행하는 것과 마찬가지로 완벽하게 실행됩니다. 나는 허드슨 작업에서 bash는 스크립트 내부 함수로 그 정확한 명령을 실행하는 경우, 그것은 실패 :허드슨에 의해 호출 된 스크립트에서 실행될 때 cp 명령이 실패합니다.
cp: cannot stat '/opt/flash_board.tar.gz': No such file or directory
변수는 다음과 같이 정의된다
original_tarball=flash_board.tar.gz
와 (범위 변수 확장은 스크립트에서 올바르게 작동합니다).
원래 명령은 다음과 같습니다 올바른 포트를 가리키는하지만, 정확히 같은 방법으로 실패
ssh -n -p 1601 -o stricthostkeychecking=no [email protected]$IP_ADDRESS cp /opt/$original_tarball /opt/$original_tarball.bak
:
는ssh -n -o stricthostkeychecking=no [email protected]$IP_ADDRESS ssh -n -o stricthostkeychecking=no 169.254.0.2 cp /opt/$original_tarball /opt/$original_tarball.bak
나는 또한 그것을 시도했습니다.
참조를 위해 모든 변수가 유효한지 확인되었습니다. 원래는이 선수 교체의 오류라고 생각하지만이 경우 될 것 같지 않기 때문에 그때로 허드슨 자격 증명으로 실행 시도 :
sudo -u hudson ssh -n -o stricthostkeychecking=no [email protected]$IP_ADDRESS ssh -n -o stricthostkeychecking=no 169.254.0.2 cp /opt/$original_tarball /opt/$original_tarball.bak
나는 똑같은 결과를 (작동) 얻을. 따라서이 명령이 Hudson 작업에서 실행될 때만 실패합니다.
다음은 이벤트의 순서입니다 :
- 허드슨 작업이 쉘 스크립트를 호출 & 매개 변수를 설정합니다.
- 스크립트 안에 함수는 두 번째 임베디드 아라고에 SPI 버스를 통해 임베디드 몬테 (리눅스) 보드에서 원격으로 파일을 복사하려고 (리눅스) 보드
- 두 보드가 같은 마더 보드에 물리적으로, 그러나 거기 직렬 콘솔 세션을 통하는 경우를 제외하고는 Arago 보드에 직접 액세스 할 수 없습니다 (이는 실행 가능하지 않습니다. 이는 네트워크에서 실행되는 자동화 작업입니다).
ssh와 -p 1601 (Arago에 올바른 포트)을 사용하여 이것을 시도했습니다.
원격 파일을 다른 파일 확장자를 가진 원격 파일과 동일한 위치에 복사하는 데 scp를 사용할 수 있습니까? 같은
뭔가 :
scp -o stricthostkeychecking=no [email protected]$IP_ADDRESS /opt/$original_tarball /opt/$original_tarball.bak
은 내가 devs를 몇이 살펴보고 그들이뿐만 아니라 난처한 상황에 빠진했다 있었다. 누구나 어떤 아이디어 (A)가 실패했는지 & (B) 어떻게 해결해야하는지 알 수 있습니다. 원격 컴퓨터에서 로컬로 실행되는 스크립트를 작성할 수 있다고 확신하지만, 꼭 필요한 것은 아닌 것 같습니다. 내가 SPI 버스 (169.254.0.2)를 통해 갈 필요가 없습니다 의미합니다 (몬테 보드의 동일한 명령을 실행하면
아, 그리고, 그것은 허드슨 작업에서 완벽하게 작동합니다.
배포 다이어그램 pls? 다섯 번째 코드 블록에서 이중 ssh가 혼란 스럽습니다. 나는 ssh에서 -vv를 사용하고 차이점을 찾기 위해 가능한 한 테스트 스크립트에서 많은 환경 정보 (PATH,'cp 등)를 출력한다. – themel
@ themel. 나는 너무 새로워서 이미지를 올릴 수 없다. 이중 ssh를 사용하면 허드슨 서버에서 SPI 링크를 통해 Arago 보드와 통신하는 Montevista 보드로 이동할 수 있으므로 두 번째 ssh는 169.254.0.2로 넘어갑니다. 나는 Arago 보드에 직접 접근 할 수있는 방법이 없다. 1601 번 포트를 통과하거나 거기에 도착하기 위해 이중 ssh를해야한다. (둘다 다른 bash 명령을 여러 개 사용하면 괜찮을 것이다.하지만 조심해야한다. 두 버전 모두에서 다른 버전의 busybox 임). – delliottg
파일에 대한 사용 권한을 확인하십시오. –