URL에서 bash 스크립트 실행
"http://mywebsite.com/myscript.txt"URL에 스크립트가 포함 된 파일이 있다고 가정 해 보겠습니다.
#!/bin/bash
echo "Hello, world!"
read -p "What is your name? " name
echo "Hello, ${name}!"
이 스크립트를 먼저 파일로 저장하지 않고이 스크립트를 실행하고 싶습니다. 어떻게해야합니까?
이제 구문을 보았습니다.
bash < <(curl -s http://mywebsite.com/myscript.txt)
그러나 파일에 저장 한 다음 실행하면 작동하지 않는 것 같습니다. 예를 들어 readline이 작동하지 않고 출력은 다음과 같습니다.
$ bash < <(curl -s http://mywebsite.com/myscript.txt)
Hello, world!
마찬가지로, 나는 시도했다 :
curl -s http://mywebsite.com/myscript.txt | bash -s --
같은 결과로.
원래 나는 다음과 같은 해결책을 가지고 있었다.
timestamp=`date +%Y%m%d%H%M%S`
curl -s http://mywebsite.com/myscript.txt -o /tmp/.myscript.${timestamp}.tmp
bash /tmp/.myscript.${timestamp}.tmp
rm -f /tmp/.myscript.${timestamp}.tmp
그러나 이것은 조잡 해 보이며 더 우아한 해결책을 원합니다.
URL에서 셸 스크립트를 실행하는 것과 관련된 보안 문제를 알고 있지만 지금은이 모든 것을 무시하겠습니다.
source <(curl -s http://mywebsite.com/myscript.txt)
해야합니다. 또는 표준 입력을 리디렉션하는 초기 리디렉션을 사용하지 마십시오. 경로 bash
재 지정없이 파일 이름을 가져 와서 제대로 실행하고 <(command)
구문은 경로를 제공합니다.
bash <(curl -s http://mywebsite.com/myscript.txt)
출력을 보면 더 명확해질 수 있습니다. echo <(cat /dev/null)
다음은 일부 인수 (arg1 arg2)를 전달하여 원격 스크립트를 실행하는 방법입니다.
curl -s http://server/path/script.sh | bash /dev/stdin arg1 arg2
bash, Bourne shell 및 fish의 경우 :
curl -s http://server/path/script.sh | bash -s arg1 arg2
플래그 "-s"는 stdin에서 쉘을 읽습니다.
사용 wget
: 일반적으로 기본 시스템 설치의 일부입니다.
bash <(wget -qO- http://mywebsite.com/myscript.txt)
그냥 시도하십시오 :
bash <(curl -s http://mywebsite.com/myscript.txt)
당신은 또한 이것을 할 수 있습니다 :
wget -O - https://raw.github.com/luismartingil/commands/master/101_remote2local_wireshark.sh | bash
사용하다:
curl -s -L URL_TO_SCRIPT_HERE | bash
예를 들면 다음과 같습니다.
curl -s -L http://bitly/10hA8iC | bash
가장 좋은 방법은
curl http://domain/path/to/script.sh | bash -s arg1 arg2
@ user77115의 답변이 약간 변경되었습니다.
나는 종종 다음을 사용하면 충분하다
curl -s http://mywebsite.com/myscript.txt | sh
그러나 오래된 시스템 (kernel2.4)에서는 문제가 발생하여 다음을 수행하여 해결할 수 있습니다.
curl -s http://mywebsite.com/myscript.txt -o a.sh && sh a.sh && rm -f a.sh
예
$ curl -s someurl | sh
Starting to insert crontab
sh: _name}.sh: command not found
sh: line 208: syntax error near unexpected token `then'
sh: line 208: ` -eq 0 ]]; then'
$
The problem may cause by network slow, or bash version too old that can't handle network slow gracefully
However, the following solves the problem
$ curl -s someurl -o a.sh && sh a.sh && rm -f a.sh
Starting to insert crontab
Insert crontab entry is ok.
Insert crontab is done.
okay
$
Also:
curl -sL https://.... | sudo bash -
Just combining amra and user77115's answers:
wget -qO- https://raw.githubusercontent.com/lingtalfi/TheScientist/master/_bb_autoload/bbstart.sh | bash -s -- -v -v
It executes the bbstart.sh distant script passing it the -v -v options.
Is some unattended scripts I use the following command:
sh -c "$(curl -fsSL <URL>)"
I recommend to avoid executing scripts directly from URLs. You should be sure the URL is safe and check the content of the script before executing, you can use a SHA256 checksum to validate the file before executing.
This way is good and conventional:
17:04:59@itqx|~
qx>source <(curl -Ls http://192.168.80.154/cent74/just4Test) Lord Jesus Loves YOU
Remote script test...
Param size: 4
---------
17:19:31@node7|/var/www/html/cent74
arch>cat just4Test
echo Remote script test...
echo Param size: $#
bash | curl http://your.url.here/script.txt
actual example:
juan@juan-MS-7808:~$ bash | curl https://raw.githubusercontent.com/JPHACKER2k18/markwe/master/testapp.sh
Oh, wow im alive
juan@juan-MS-7808:~$
참고URL : https://stackoverflow.com/questions/5735666/execute-bash-script-from-url
'Programing' 카테고리의 다른 글
우분투에서 안드로이드 스튜디오를 설치할 수 없습니다 (0) | 2020.06.02 |
---|---|
로컬 파일을 Java의 URL로 전달 (0) | 2020.06.02 |
Postgres 배열에 값이 있는지 확인 (0) | 2020.06.02 |
슬라이스 방법이 들어 있습니다 (0) | 2020.06.02 |
양방향 JPA OneToMany / ManyToOne 연결에서“연결의 반대면”이란 무엇입니까? (0) | 2020.06.02 |