python subprocess and wget ask-password
up vote
0
down vote
favorite
I'm running the following python code:
import subprocess
host = "ftp://localhost:2121"
p = subprocess.Popen(
['wget', '-P', '/tmp/output', '-N', '-r', '-l', 'inf', '--ask-password', '--user', 'anonymous', host],
stdin=subprocess.PIPE)
p.communicate("passwordn")
if p.returncode != 0:
raise RuntimeError('wget command failed with return code: %d' % p.returncode)
It appears that password
is not sent to wget since the script will hang showing:
Password for user ‘anonymous’:
Pressing enter causes wget to exit with an error code of '1'
Pressing keys then pressing enter causes wget to begin downloading as expected.
The ftp server is local and has anonymous access enabled. Python version is 2.7.8
python subprocess
add a comment |
up vote
0
down vote
favorite
I'm running the following python code:
import subprocess
host = "ftp://localhost:2121"
p = subprocess.Popen(
['wget', '-P', '/tmp/output', '-N', '-r', '-l', 'inf', '--ask-password', '--user', 'anonymous', host],
stdin=subprocess.PIPE)
p.communicate("passwordn")
if p.returncode != 0:
raise RuntimeError('wget command failed with return code: %d' % p.returncode)
It appears that password
is not sent to wget since the script will hang showing:
Password for user ‘anonymous’:
Pressing enter causes wget to exit with an error code of '1'
Pressing keys then pressing enter causes wget to begin downloading as expected.
The ftp server is local and has anonymous access enabled. Python version is 2.7.8
python subprocess
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I'm running the following python code:
import subprocess
host = "ftp://localhost:2121"
p = subprocess.Popen(
['wget', '-P', '/tmp/output', '-N', '-r', '-l', 'inf', '--ask-password', '--user', 'anonymous', host],
stdin=subprocess.PIPE)
p.communicate("passwordn")
if p.returncode != 0:
raise RuntimeError('wget command failed with return code: %d' % p.returncode)
It appears that password
is not sent to wget since the script will hang showing:
Password for user ‘anonymous’:
Pressing enter causes wget to exit with an error code of '1'
Pressing keys then pressing enter causes wget to begin downloading as expected.
The ftp server is local and has anonymous access enabled. Python version is 2.7.8
python subprocess
I'm running the following python code:
import subprocess
host = "ftp://localhost:2121"
p = subprocess.Popen(
['wget', '-P', '/tmp/output', '-N', '-r', '-l', 'inf', '--ask-password', '--user', 'anonymous', host],
stdin=subprocess.PIPE)
p.communicate("passwordn")
if p.returncode != 0:
raise RuntimeError('wget command failed with return code: %d' % p.returncode)
It appears that password
is not sent to wget since the script will hang showing:
Password for user ‘anonymous’:
Pressing enter causes wget to exit with an error code of '1'
Pressing keys then pressing enter causes wget to begin downloading as expected.
The ftp server is local and has anonymous access enabled. Python version is 2.7.8
python subprocess
python subprocess
asked Nov 19 at 6:32
Taras
1,10322443
1,10322443
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
0
down vote
Try adding this before p.communicate
:
p.stdin.write('passwordn')
p.stdin.flush()
stdout, stderr = p.communicate()
No luck :( wget wouldn't be doing something like spinning up a different process to request the password, would it?
– Taras
Nov 19 at 6:52
I tested it and indeed you're right... this is interesting. Can you just pass the password as an argument or is there a reason you're doing it this way?
– nico
Nov 21 at 4:35
add a comment |
up vote
0
down vote
accepted
It appears that wget reads the password from the tty rather than stdin. These are not the same!
The sudo command allows you to switch to stdin
also
Certain programs read directly from /dev/tty, not stdin. "passwd" for example. So it's difficult to script them. Expect is one way around that - it can trick the program by providing input to them:
One way to achieve reading the password from stdin is to construct a url containing the user & pass:
ftp://user:password@ftp.server.com/link.txt
And using the -l -
switch to pass the link into wget via stdin. This is suggested here
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53369417%2fpython-subprocess-and-wget-ask-password%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
Try adding this before p.communicate
:
p.stdin.write('passwordn')
p.stdin.flush()
stdout, stderr = p.communicate()
No luck :( wget wouldn't be doing something like spinning up a different process to request the password, would it?
– Taras
Nov 19 at 6:52
I tested it and indeed you're right... this is interesting. Can you just pass the password as an argument or is there a reason you're doing it this way?
– nico
Nov 21 at 4:35
add a comment |
up vote
0
down vote
Try adding this before p.communicate
:
p.stdin.write('passwordn')
p.stdin.flush()
stdout, stderr = p.communicate()
No luck :( wget wouldn't be doing something like spinning up a different process to request the password, would it?
– Taras
Nov 19 at 6:52
I tested it and indeed you're right... this is interesting. Can you just pass the password as an argument or is there a reason you're doing it this way?
– nico
Nov 21 at 4:35
add a comment |
up vote
0
down vote
up vote
0
down vote
Try adding this before p.communicate
:
p.stdin.write('passwordn')
p.stdin.flush()
stdout, stderr = p.communicate()
Try adding this before p.communicate
:
p.stdin.write('passwordn')
p.stdin.flush()
stdout, stderr = p.communicate()
answered Nov 19 at 6:45
nico
1,23431530
1,23431530
No luck :( wget wouldn't be doing something like spinning up a different process to request the password, would it?
– Taras
Nov 19 at 6:52
I tested it and indeed you're right... this is interesting. Can you just pass the password as an argument or is there a reason you're doing it this way?
– nico
Nov 21 at 4:35
add a comment |
No luck :( wget wouldn't be doing something like spinning up a different process to request the password, would it?
– Taras
Nov 19 at 6:52
I tested it and indeed you're right... this is interesting. Can you just pass the password as an argument or is there a reason you're doing it this way?
– nico
Nov 21 at 4:35
No luck :( wget wouldn't be doing something like spinning up a different process to request the password, would it?
– Taras
Nov 19 at 6:52
No luck :( wget wouldn't be doing something like spinning up a different process to request the password, would it?
– Taras
Nov 19 at 6:52
I tested it and indeed you're right... this is interesting. Can you just pass the password as an argument or is there a reason you're doing it this way?
– nico
Nov 21 at 4:35
I tested it and indeed you're right... this is interesting. Can you just pass the password as an argument or is there a reason you're doing it this way?
– nico
Nov 21 at 4:35
add a comment |
up vote
0
down vote
accepted
It appears that wget reads the password from the tty rather than stdin. These are not the same!
The sudo command allows you to switch to stdin
also
Certain programs read directly from /dev/tty, not stdin. "passwd" for example. So it's difficult to script them. Expect is one way around that - it can trick the program by providing input to them:
One way to achieve reading the password from stdin is to construct a url containing the user & pass:
ftp://user:password@ftp.server.com/link.txt
And using the -l -
switch to pass the link into wget via stdin. This is suggested here
add a comment |
up vote
0
down vote
accepted
It appears that wget reads the password from the tty rather than stdin. These are not the same!
The sudo command allows you to switch to stdin
also
Certain programs read directly from /dev/tty, not stdin. "passwd" for example. So it's difficult to script them. Expect is one way around that - it can trick the program by providing input to them:
One way to achieve reading the password from stdin is to construct a url containing the user & pass:
ftp://user:password@ftp.server.com/link.txt
And using the -l -
switch to pass the link into wget via stdin. This is suggested here
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
It appears that wget reads the password from the tty rather than stdin. These are not the same!
The sudo command allows you to switch to stdin
also
Certain programs read directly from /dev/tty, not stdin. "passwd" for example. So it's difficult to script them. Expect is one way around that - it can trick the program by providing input to them:
One way to achieve reading the password from stdin is to construct a url containing the user & pass:
ftp://user:password@ftp.server.com/link.txt
And using the -l -
switch to pass the link into wget via stdin. This is suggested here
It appears that wget reads the password from the tty rather than stdin. These are not the same!
The sudo command allows you to switch to stdin
also
Certain programs read directly from /dev/tty, not stdin. "passwd" for example. So it's difficult to script them. Expect is one way around that - it can trick the program by providing input to them:
One way to achieve reading the password from stdin is to construct a url containing the user & pass:
ftp://user:password@ftp.server.com/link.txt
And using the -l -
switch to pass the link into wget via stdin. This is suggested here
answered Nov 22 at 1:36
Taras
1,10322443
1,10322443
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53369417%2fpython-subprocess-and-wget-ask-password%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown