Bagaimana untuk Melarikan Diri dengan Selamat Watak untuk Panggilan os.system()?

Linda Hamilton
Lepaskan: 2024-10-28 20:39:02
asal
479 orang telah melayarinya

How to Safely Escape Characters for os.system() Calls?

Escape Characters for os.system() Calls

Apabila menggunakan os.system(), memastikan pelarian nama fail dan argumen dengan betul adalah penting . Berikut ialah penyelesaian yang menangani isu ini dan menyediakan sokongan untuk berbilang sistem pengendalian dan cengkerang, terutamanya bash.

Menggunakan Petikan

Pendekatan yang paling mudah dan selamat adalah dengan menyertakan arahan dan hujah dalam petikan berganda atau tunggal:

os.system("my_command 'argument with spaces'")
Salin selepas log masuk

Meloloskan diri Menggunakan shlex atau paip

Jika tanda petikan tidak sesuai, modul shlex atau paip boleh digunakan untuk melarikan diri aksara:

  • shlex.quote(string): Fungsi ini melepaskan aksara khas dalam rentetan, menjadikannya selamat untuk dihantar ke bash.
  • pipes.quote(string): Serupa kepada shlex.quote(), tetapi untuk versi Python yang lebih lama (menyokong kedua-dua Python 2 dan 3).

Contoh Penggunaan

Katakan anda mahu menjalankan arahan "cat input.txt | grep 'find something' | sort > output.txt" menggunakan os.system(). Menggunakan shlex.quote(), kodnya ialah:

import shlex

cmd = "cat {} | grep '{}' | sort > {}".format(
    shlex.quote("input.txt"),
    shlex.quote("find something"),
    shlex.quote("output.txt"),
)
os.system(cmd)
Salin selepas log masuk

Nota tentang Keselamatan

Sementara os.system() menawarkan cara yang cepat dan langsung untuk melaksanakan perintah sistem, adalah penting untuk mempertimbangkan potensi kelemahan keselamatan. Pastikan input yang dijana pengguna atau tidak dipercayai disahkan dan dibersihkan dengan betul sebelum menggunakan os.system().

Atas ialah kandungan terperinci Bagaimana untuk Melarikan Diri dengan Selamat Watak untuk Panggilan os.system()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan