it-swarm-vi.tech

lệnh curl không thực thi thông qua tập lệnh Shell trong bash

Tôi đang học kịch bản Shell! tương tự, tôi đã thử tải xuống trang facebook bằng cách sử dụng curl trên thiết bị đầu cuối Ubuntu.

nội dung t.sh

[email protected](Desktop) $ cat t.sh 
curlCmd="curl \"https://www.facebook.com/vivekkumar27june88\""
echo $curlCmd
($curlCmd) > ~/Desktop/fb.html

Gặp lỗi khi chạy tập lệnh như

[email protected](Desktop) $ ./t.sh 
curl "https://www.facebook.com/vivekkumar27june88"
curl: (1) Protocol "https not supported or disabled in libcurl

Nhưng nếu chạy lệnh trực tiếp thì nó hoạt động tốt.

[email protected](Desktop) $ curl "https://www.facebook.com/vivekkumar27june88"
<!DOCTYPE html>
<html lang="hi" id="facebook" class="no_js">
<head><meta chars.....

Tôi sẽ đánh giá cao nếu có ai cho tôi biết lỗi tôi đang làm trong kịch bản.

Tôi đã xác minh rằng thư viện curl đã kích hoạt ssl.

5
Vivek Kumar

Một lệnh được nhúng trong ngoặc đơn chạy dưới dạng Shell con vì vậy các biến môi trường của bạn sẽ bị thiếu.

Hãy thử eval:

curlCmd="curl 'https://www.facebook.com/vivekkumar27june88' > ~/Desktop/fb.html"
eval $curlCmd
11
abhiweb

Tạo tập lệnh của bạn t.sh chỉ là một dòng duy nhất:

curl -k "https://www.facebook.com/vivekkumar27june88" -o ~/Desktop/fb.html

Theo man curl:

-k, --insecure

(SSL) This option explicitly allows curl to perform "insecure" SSL connections transfers.  
All  SSL  connections  are  attempted  to be made secure by using the CA certificate bundle
installed by default. This makes all connections considered "insecure" fail unless -k,
--insecure is used.

-o file

Store output in the given filename.
3
anubhava

Như @Chepner đã nói, hãy đọc BashFAQ # 50: Tôi đang cố gắng đặt một lệnh trong một biến, nhưng các trường hợp phức tạp luôn thất bại! . Tóm lại, làm thế nào bạn nên làm những việc như thế này phụ thuộc vào mục tiêu của bạn là gì.

  • Nếu bạn không cần lưu trữ lệnh, không ! Lưu trữ các lệnh rất khó để có được quyền, vì vậy nếu bạn không cần, chỉ cần bỏ qua mớ hỗn độn đó và thực hiện trực tiếp:

    curl "https://www.facebook.com/vivekkumar27june88" > ~/Desktop/fb.html
    
  • Nếu bạn muốn ẩn chi tiết của lệnh hoặc sẽ sử dụng nó nhiều và không muốn viết ra mỗi lần, hãy sử dụng một hàm:

    curlCmd() {
        curl "https://www.facebook.com/vivekkumar27june88"
    }
    
    curlCmd > ~/Desktop/fb.html
    
  • Nếu bạn cần xây dựng lệnh từng mảnh một, hãy sử dụng một mảng thay vì một biến chuỗi đơn giản:

    curlCmd=(curl "https://www.facebook.com/vivekkumar27june88")
    for header in "${extraHeaders[@]}"; do
        curlCmd+=(-H "$header")   # Add header options to the command
    done
    if [[ "$useSilentMode" = true ]]; then
        curlCmd+=(-s)
    fi
    
    "${curlCmd[@]}" > ~/Desktop/fb.html    # This is the standard idiom to expand an array
    
  • Nếu bạn muốn in lệnh, cách tốt nhất để thực hiện thường là với set -x:

    đặt -x [.__.] curl " https://www.facebook.com/vivekkumar27june88 "> ~/Máy tính để bàn/fb.html [.___

    ... nhưng bạn cũng có thể làm điều gì đó tương tự với cách tiếp cận mảng nếu bạn cần:

    printf "%q " "${curlCmd[@]}"    # Print the array, quoting as needed
    printf "\n"
    "${curlCmd[@]}" > ~/Desktop/fb.html
    
1
Gordon Davisson

Cài đặt các phần mềm sau trong Ubuntu 14.04

  1. Sudo apt-get cài đặt php5-curl
  2. Sudo apt-get cài đặt curl

sau đó chạy dịch vụ Sudo Apache2 khởi động lại [.__.] kiểm tra phpinfo () của bạn được bật với curl "hỗ trợ cURL: enable"

Sau đó kiểm tra lệnh của bạn trong tập lệnh Shell

KẾT QUẢ = curl -L "http://sitename.com/dashboard/?show=api&action=queue_proc&key=$JOBID" 2>/dev/null

tiếng vang $ KẾT QUẢ

Bạn sẽ nhận được phản hồi;

Cảm ơn bạn.

0
Vinay Joshi