#java #macos #terminal #wget
#Ява #macos #терминал #wget
Вопрос:
Я пишу сценарий, ведьме нужно позвонить в wget с:
String url = "https://someurl.com/" String cookies = "/home/cookie_file.txt/" String command = "wget --load-cookies " cookies " -U "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" -e robots=off --reject '*.js,*.css,*.ico,*.txt,*.gif,*.jpg,*.jpeg,*.png,*.mp3,*.pdf,*.tgz,*.flv,*.avi,*.mpeg,*.iso' --ignore-tags=img,link,script --header="Accept: text/html" -r -np " url ; Process proc = Runtime.getRuntime().exec(command);
Когда я запускаю команду из терминала, все в порядке, все работает нормально, но когда я запускаю ее из java, файл запускается и завершается через секунду, и вывод не выдается.Я что-то упускаю? Я нахожусь на Ubuntu, но скрипт также должен работать на Mac OS также, когда я запускаю sudo из файла jar с тем же результатом.
Это тот самый proc.info()
[user: Optional[myuser], cmd: /usr/bin/wget, args: [-c, --load-cookies, 76e181c7-78d4-4e7a-8f3b-10e6a04905b6.txt, -U, "Mozilla/5.0, (X11;, Linux, x86_64), AppleWebKit/537.36, (KHTML,, like, Gecko), Chrome/51.0.2704.103, Safari/537.36", -e, robots=off, --reject, '*.js,*.css,*.ico,*.txt,*.gif,*.jpg,*.jpeg,*.png,*.mp3,*.pdf,*.tgz,*.flv,*.avi,*.mpeg,*.iso', --ignore-tags=img,link,script, --header="Accept:, text/html", -r, -np, https://www.url.com], startTime: Optional[2021-12-03T13:27:19.470Z], totalTime: Optional[PT0S]]
Комментарии:
1. Выходные данные записываются в каналы, которые вы можете прочитать, например, через
proc.getInputStream()
. Если вы этого не хотите, а скорее запишите выходные данные в ту же консоль, что и ваш процесс Java, используйтеString[] command = { "wget", "--load-cookies", cookies, "-U", "Mozilla/5.0 … Chrome/51.0.2704.103 Safari/537.36", "-e", "robots=off", "--reject", "'*.js,*.css,*.ico,*.txt,*.gif,*.jpg,*.jpeg,*.png,*.mp3,*.pdf,*.tgz,*.flv,*.avi,*.mpeg,*.iso'", "--ignore-tags=img,link,script", "--header=Accept: text/html", "-r", "-np", url }; Process proc = new ProcessBuilder(command).inheritIO().start();
2. Да, я только что нашел это также и его работу с массивом String []. Спасибо