Saya ingin membuat program dalam bahasa C yang memungkinkan saya menjalankan perintah di terminal.
Saya telah membuat program dalam skrip shell yang akan memberi saya ip situs web apa pun yang dibuka di browser saya. Script shell ini dijalankan dengan memasukkan perintah ini di terminal:
sudo tcpdump -n dst port 80 -i eth
Profesor saya mengatakan kepada saya untuk membuat program dalam bahasa C yang akan membuka terminal dan memasukkan perintah ini dan kemudian skrip shell saya akan bekerja.
Tolong beritahu saya cara membuat program seperti itu.
sumber
Halo saya akan menulis untuk Anda contoh kode, jelaskan kepada Anda dan sangat berharap ini membantu Anda. prototipe fungsi adalah sesuatu seperti:
sistem int (const char * cmd);
1). buka terminal dan kompilasi program
2). jalankan (misalnya di Ubuntu) ./program_name comman_name -anything - anything
contoh: ./a.out lokal -a
contoh ini mencetak semua lokal yang didukung oleh kompiler saya yang gcc.
Info lebih lanjut:
p adalah poniter untuk penunjuk ke char (seperti argv adalah) p = & argv [2], menunjuk ke-apapun string i cat all -apapun ke string cmd saya saya keluar dari loop ketika * p menunjuk ke NULL lihat ini: -> saya akan menggunakan simbol ini untuk mengatakan poin ke (jangan bingung dengan operator pemilihan panah kanan).
argv [0] -> program_name
argv [1] -> command_name (dalam contoh ini nama perintah akan menjadi lokal, tetapi masukkan perintah yang ingin Anda periksa)
argv [2] ->-apapun (dalam contoh ini -a, yang semuanya lokal)
argv [3] -> NULL (dalam contoh ini, ini keluar dari loop)
ok itu saja, saya kira.
sumber
Saya akan berasumsi bahwa ini adalah tentang menggunakan biner setuid-root untuk menggantikan sudo, bukan hanya eksekusi perintah sewenang-wenang, jadi saya akan memasukkan bagian lain dari solusi.
Sebagai masalah keamanan, kami menghindari sistem () karena dapat dibajak.
Setelah mengkompilasi ini, instal biner yang dihasilkan sebagai setuid-root.
jika Anda telah menyimpan ini sebagai
foo.c
, dan ingin diinstal sebagai/usr/local/sbin/foo
, jalankan:sumber