Expect script to install Vagrant - terminating for no apparent reason - macos

I am running a simple expect script that uses curl to pull the vagrant dmg, attaches it, installs it and proves password and then detaches.
Individually all the commands execute at the command line and the install works.
However when executing inside of the script it terminates after the curl completes.
#!/usr/bin/expect -f
set timeout 60
exec curl -O https://releases.hashicorp.com/vagrant/2.2.2/vagrant_2.2.2_x86_64.dmg
exec hdiutil attach vagrant_2.2.2_x86_64.dmg
spawn sudo installer -package /Volumes/Vagrant/vagrant.pkg -target /
expect "*?assword" { send “password” }
spawn hdiutil unmount /Volumes/Vagrant
The output I get is (concatenated):
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
1 31.2M 1 563k 0 0 2218k 0 0:00:14 --:--:-- 0:00:01 8873k
97 31.2M 97 30.5M 0 0 9628k 0 0:00:03 0:00:03 --:--:-- 9627k
100 31.2M 100 31.2M 0 0 9668k 0 0:00:03 0:00:03 --:--:-- 9667k
while executing
"exec curl -O https://releases.hashicorp.com/vagrant/2.2.2/vagrant_2.2.2_x86_64.dmg"
(file "./vag" line 9)
At which time the script terminates.

Tcl's exec would fail if the executed command outputs anything to stderr.
curl outputs the download progress info to stderr .
So you need to ask exec to ignore the output to stderr: exec -ignorestderr curl ...

Related

installing docker-compose using standard procedure gives "permission denied"

I have done this many times but this is new.
Just following the docker-compose install from docker.com
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 633 100 633 0 0 2082 0 --:--:-- --:--:-- --:--:-- 2075
100 12.1M 100 12.1M 0 0 5940k 0 0:00:02 0:00:02 --:--:-- 10.8M
sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
-bash: /usr/local/bin/docker-compose: Permission denied
What is going wrong here ? It used to work before.

How to tidy up a curl output and make it throw errors inside of Jenkins job?

I use curl commands in my jenkins jobs and I have some questions about them. I have a command like this. Here a get a json object, parse it and put the result to array "fileslist"
fileslist=($(curl -u user:password -X POST -k http://server:8081/artifactory/api/search/aql -d "items.find({\"type\" : \"folder\", \"repo\" : \"${REPOSITORY}\", \"path\" : \".\", \"name\" : {\"\$nmatch\" : \"\.\"}, \"modified\" : {\"\$lt\" : \"$borderdate\"} })" | jq --raw-output '.results | .[] | .name'))
When I use it, I have this information in my output , that I don't really want to see.
.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 1196 100 1052 100 144 227k 31858 --:--:-- --:--:-- --:--:-- 1027k
I can use --silent option, but it makes silent all the output, so it doesn't match with --fail option. What I need is to see in my log only information about errors, that occurred during the curl command.
I want the command above (if something goes wrong) write a error and STOP a Jenkins job. When I use --fail option, it just writes to the output about a error and my script continues. You can tell me to use Parse Input Plugin, but it is not what I want: It marks a build as "failed build" AFTER the script finished it's work, but I want to make it stop immediately.
The same questions about wget command.
Thank you in advance!

Reduce output of curl command

When I run a curl command against my non-running server, I get below output.
I only want
Failed to connect: Connection Refused
How can I remove the extra output. If I run --silent, it suppress everything.
I get this o/p for curl http://localhost:300/index.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 9626 100 9626 0 0 148k 0 --:--:-- --:--:-- --:--:-- 149k
Failed to connect: Connection Refused
yes! using -s, --silent along with -S, --show-error is the right option.
Curl gives me the compressed output by default, but try:
curl --compressed http://localhost:300/index.html
By contrast --verbose returns more lengthy output.
man curl will show you all the options available to you.
Looks like I need to use -sS. man curl will show you all the options available to you.

RVM failed writing to body [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 9 years ago.
Improve this question
I am trying to install RVM on my Mac running the latest OS.
I first tried
$ \curl -L https://get.rvm.io | bash -s stable
Cannot open for reading: "stable"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 184 100 184 0 0 181 0 0:00:01 0:00:01 --:--:-- 181
100 15779 100 15779 0 0 11505 0 0:00:01 0:00:01 --:--:-- 98618
(23) Failed writing body
I then tried dropping the stable
$ \curl -L https://get.rvm.io | bash -s
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Aug 24 2013 18:58:47)
Argument missing after: "-s"
More info with: "vim -h"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 184 100 184 0 0 148 0 0:00:01 0:00:01 --:--:-- 148
100 15779 100 15779 0 0 7706 0 0:00:02 0:00:02 --:--:-- 30698
(23) Failed writing body
I have also tried the following
$ \curl -L https://get.rvm.io | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Vim: Warning: Input is not from a terminal
100 184 100 184 0 0 111 0 0:00:01 0:00:01 --:--:-- 111
100 15779 100 15779 0 0 8689 0 0:00:01 0:00:01 --:--:-- 8300k
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
How about \curl -L https://get.rvm.io | bash?
The installation page for RVM is essential reading.

RVM installation: `/usr/local/rvm': Permission denied

demas#demas:~$ sudo rm -rf /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm
demas#demas:~$ curl -L https://get.rvm.io | bash -s stable
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 184 100 184 0 0 218 0 --:--:-- --:--:-- --:--:-- 308
100 13145 100 13145 0 0 12150 0 0:00:01 0:00:01 --:--:-- 12150
mkdir: cannot create directory `/usr/local/rvm': Permission denied
How can I fix it ?
As a quick variant of eliminating this problem you can create rvm directory and allow everyone to write to it:
sudo mkdir /usr/local/rvm; sudo chmod a+xwr /usr/local/rvm
you need to clean shell environment variables before start new installation, th easiest way is to logout and login again.
I added the sudo on the right side of the '|' before the bash` and it seems to work:
curl -sSL https://get.rvm.io | sudo bash -s -- --version latest**
Result: Downloading https://github.com/wayneeseguin/rvm/archive/1.26.10.tar.gz
Downloading

Resources