ນີ້ແມ່ນຄໍາສັ່ງ hexec ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
hexec - ເຄື່ອງມືການປະຕິບັດຂະບວນການ hooking
ສະຫຼຸບສັງລວມ
hexec [expr] [cmd] [args...]
ລາຍລະອຽດ
hexec ເປັນເຄື່ອງມືທີ່ຈະເຊື່ອມໂຍງເຂົ້າໄປໃນຂະບວນການໂທປະຕິບັດ (exec ຄອບຄົວຂອງ syscalls). ເຈົ້າສາມາດ
ກໍານົດການສະແດງອອກທີ່ຖືກປະຕິບັດຕໍ່ກັບການເອີ້ນ exec ທີ່ເຊື່ອມຕໍ່ໃດໆ. ການສະແດງອອກນີ້ອາດຈະ
ຍັງປະກອບດ້ວຍການໂທ exec ທົດແທນ.
OPTIONS ບົດສະຫຼຸບ
ນີ້ແມ່ນສະຫຼຸບຂອງທາງເລືອກໃນການ hexec.
--ຊ່ວຍ | -h ພິມໜ້າຕົວເລືອກ/expr ສະຫຼຸບ
--ສະບັບ | -v ພິມສະບັບ hexec
--log-out | -lo ກໍານົດໄຟລ໌ຜົນຜະລິດສໍາລັບຄວາມຜິດພາດແລະ -print ຜົນຜະລິດ
OPTIONS
-h ພິມໜ້າຕົວເລືອກ/expr ສະຫຼຸບ
- ຊ່ວຍ ພິມໜ້າຕົວເລືອກ/expr ສະຫຼຸບ
ມັນ ກໍານົດໄຟລ໌ຜົນຜະລິດສໍາລັບຄວາມຜິດພາດແລະ -print output. ນີ້ສາມາດຕ້ອງການຖ້າຂຽນ
to stderr ສາມາດເຮັດໃຫ້ເກີດຄວາມຜິດປົກກະຕິເພາະວ່າບາງຂະບວນການອ່ານຈາກ stderr ແລະ
ຄາດຫວັງວ່າຜົນຜະລິດທີ່ກໍານົດໄວ້ດີ.
ການສະແດງອອກ
ການສະແດງຜົນຖືກປະຕິບັດຕໍ່ກັບການໂທການປະຕິບັດຂະບວນການທັງຫມົດ. ຖ້າການສະແດງອອກກັບຄືນມາ
ຄວາມຈິງ, ການໂທຕົ້ນສະບັບຖືກຂ້າມໄປ.
- ແລະ
-a
ໃຫ້ຜົນເປັນຈິງ ຖ້າທັງສອງສະແດງອອກເປັນຈິງ. ຖ້າຊ້າຍກັບຄືນຜິດ, ຂວາ
ການສະແດງອອກບໍ່ເຄີຍຖືກປະຕິບັດ.
-ຫຼື
-o
ໃຫ້ຜົນເປັນຈິງຖ້າໜຶ່ງໃນທັງສອງສະແດງຜົນຕອບເປັນຈິງ. ຖ້າຊ້າຍກັບຄືນຄວາມຈິງ, the
ການສະແດງອອກທີ່ຖືກຕ້ອງບໍ່ເຄີຍຖືກປະຕິບັດ.
- ເສັ້ນທາງ
ໃຫ້ຜົນເປັນຈິງຖ້າເສັ້ນທາງຂອງການປະຕິບັດໄດ້ກົງກັນ . ເປັນ bash ເປັນ
ຮູບແບບບັດປ່າທີ່ເຂົ້າກັນໄດ້.
- ipath
ຄືກັນກັບ -path, ແຕ່ case insensitive.
-yam
ໃຫ້ຜົນເປັນຈິງຖ້າຊື່ພື້ນຖານຂອງການປະຕິບັດໄດ້ກົງກັນ . ເປັນ
ຮູບແບບບັດປ່າທໍາມະຊາດທີ່ເຂົ້າກັນໄດ້ bash.
- ຊື່ສຽງ
ຄືກັນກັບ -name, ແຕ່ case insensitive.
- ປະກອບດ້ວຍ
ໃຫ້ຜົນເປັນຈິງຖ້າເສັ້ນທາງຂອງການປະຕິບັດມີສະຕຣິງ .
- ປະກອບດ້ວຍ
ຄືກັນກັບ -contains, ແຕ່ case insensitive.
- ພິມ ພິມການໂຕ້ຖຽງທັງຫມົດໄປຫາຂະບວນການທີ່ເອີ້ນວ່າ. ກັບຄືນຄວາມຈິງສະເໝີ.
-ປະຕິບັດ [args...] ;
ປະຕິບັດ ກັບ [args...] ເປັນ arguments. ການສະແດງອອກນີ້ຕ້ອງຖືກຢຸດດ້ວຍ
ເຄື່ອງໝາຍຈຸດ. ທ່ານສາມາດນໍາໃຊ້ຕົວຍຶດການໂຕ້ຖຽງໃນ ແລະ [args...] (ເບິ່ງຂ້າງລຸ່ມນີ້).
ການສະແດງອອກນີ້ກັບຄືນຄວາມຈິງສະເຫມີ.
ຫມາຍເຫດ: ກະລຸນາຮັບຊາບວ່າທ່ານອາດຈະຈໍາເປັນຕ້ອງໄດ້ຫລົບຫນີຫຼືອ້າງເຖິງການສິ້ນສຸດ
semicolon ເພື່ອບໍ່ໃຫ້ confuse ຫອຍຂອງທ່ານ.
-sh
ແປ as a shell script by invoking / ຖັງ / sh ກັບການໂຕ້ຖຽງ -c
' '. ທ່ານສາມາດນໍາໃຊ້ຕົວຍຶດການໂຕ້ຖຽງພາຍໃນ . Please note that -sh
ພຽງແຕ່ຄາດຫວັງວ່າການໂຕ້ຖຽງດຽວແລະບໍ່ແມ່ນບັນຊີລາຍຊື່ຕົວແປຂອງ argument (ເປັນ -exec
ບໍ່). ການນໍາໃຊ້ -sh ແມ່ນຄືກັນກັບການນໍາໃຊ້ -ປະຕິບັດ sh -c .
ຜູ້ຖືສະຖານທີ່ FOR -ປະຕິບັດ ການສະແດງອອກ
ທຸກໆການສະແດງອອກ -exec ສາມາດໃຊ້ placeholder ໃນບັນຊີລາຍຊື່ການໂຕ້ຖຽງເພື່ອໃຫ້ໄດ້ຂໍ້ມູນ
ຈາກການໂທ exec ຕົ້ນສະບັບ. ແຕ່ລະຕົວຍຶດເລີ່ມຕົ້ນດ້ວຍ { ແລະລົງທ້າຍດ້ວຍ }. ໃຊ້ \{ ຖ້າເຈົ້າ
ຕ້ອງການໃຊ້ { ໃນລາຍການໂຕ້ແຍ້ງຂອງເຈົ້າ. ຕົວຍຶດຖືກແທນທີ່ເມື່ອ -exec
ການສະແດງອອກຖືກປະເມີນ.
ປະເພດຕົວຍຶດ:
{n} ຈະຖືກແທນທີ່ດ້ວຍຈໍານວນຂອງການໂຕ້ຖຽງໃນການໂທຕົ້ນສະບັບ.
{ }
ຈະຖືກແທນທີ່ດ້ວຍການໂຕ້ຖຽງຕົ້ນສະບັບຢູ່ທີ່ດັດສະນີ . ຕົວຢ່າງ: {1} ຈະໃຫ້
ການໂຕ້ຖຽງທໍາອິດ. ທ່ານສາມາດ prepend ໄດ້ ດ້ວຍທຸງຕົວຍຶດ.
{} ຈະຖືກແທນທີ່ດ້ວຍການໂຕ້ຖຽງທັງຫມົດຈາກການໂທຕົ້ນສະບັບ. ການໂຕ້ຖຽງແຕ່ລະຄົນແມ່ນ
ແຍກດ້ວຍພື້ນທີ່. ທ່ານສາມາດນໍາໃຊ້ທຸງ placeholder.
ຫມາຍເຫດ: ຊື່ທີ່ປະຕິບັດໄດ້ຍັງຖືວ່າເປັນການໂຕ້ຖຽງ. ນີ້ຫມາຍຄວາມວ່າການໂທເຊັ່ນ
"ການທົດສອບ echo" ຈະສົ່ງຜົນໃຫ້ສອງການໂຕ້ຖຽງ, "echo" ແລະ "ການທົດສອບ".
ສະຖານທີ່ ດອກໄມ້
s ທຸກໆ argument ຈະຖືກໃສ່ເປັນ argument ດຽວແທນທີ່ຈະ concatenating ທັງຫມົດ
ການໂຕ້ຖຽງ.
ພິຈາລະນາການໂຕ້ຖຽງ 'a', 'b' ແລະ 'c'. ໂດຍບໍ່ມີການ s, -ປະຕິບັດ {} \; ຈະສົ່ງຜົນໃຫ້
-ປະຕິບັດ 'a b c' \;, ເຊິ່ງໃນຫຼາຍໆກໍລະນີບໍ່ແມ່ນສິ່ງທີ່ທ່ານຕ້ອງການ. -ປະຕິບັດ {s} \; ແນວໃດກໍ່ຕາມ
ຈະສົ່ງຜົນໃຫ້ -ປະຕິບັດ 'ກ' 'ຂ' 'ຄ' \;.
q ອ້າງເຖິງທຸກການໂຕ້ຖຽງ.
e ໜີອອກຈາກຕົວອັກສອນທີ່ບໍ່ແມ່ນໂຕເລກ. ທຸງນີ້ມີປະໂຫຍດຫຼາຍເມື່ອໃຊ້ "sh
-c <...>" ໃນການສະແດງອອກ -exec.
ຕົວຢ່າງ
-ປະຕິບັດ echo {} \; ກັບການໂທ 'ກ' 'ຂ' 'ຄ'
ຜົນໄດ້ຮັບໃນ: 'echo' 'abc'
-ປະຕິບັດ echo {q} \; ກັບການໂທ 'ກ' 'ຂ' 'ຄ'
ຜົນໄດ້ຮັບໃນ: 'echo' 'a' b' 'c'
-ປະຕິບັດ sh -c 'ສຽງດັງ {}; {}' \; ກັບການໂທ 'sh' '-c' 'gcc dc >> log.txt'
ຜົນໄດ້ຮັບໃນ: 'sh' '-c' 'echo sh -c gcc dc >> log.txt; sh -c gcc dc >> log.txt'
ກະລຸນາສັງເກດວ່ານີ້ຈະບໍ່ໄດ້ເຮັດສິ່ງທີ່ທ່ານອາດຈະຄາດຫວັງວ່າ, ເປັນ >> ຖືກຈັດການຜິດພາດ
ໃນກໍລະນີນີ້.
-ປະຕິບັດ sh -c 'ສຽງດັງ {e}; {}' \; ກັບການໂທ 'sh' '-c' 'gcc dc >> log.txt'
ຜົນໄດ້ຮັບໃນ: 'sh' '-c' 'echo sh \-c gcc\ d\.c\ \>\>\log\.txt; sh -c gcc dc >>
log.txt'
ການປ່ຽນແປງ ເຖິງ ຂະບວນການ
hexec ຈະເພີ່ມຕົວແປສະພາບແວດລ້ອມບາງຢ່າງໃຫ້ກັບຂະບວນການທີ່ຕິດພັນ. ເຫຼົ່ານີ້ແມ່ນ (ອາດຈະບໍ່ແມ່ນ
ສົມບູນ):
LD_PRELOAD
hexec ເພີ່ມ libhexec-hook.so ໃສ່ລາຍຊື່ຫ້ອງສະໝຸດທີ່ໂຫຼດໄວ້ລ່ວງໜ້າ.
HEXEC_EXPR_SHM
ມີຊື່ຂອງວັດຖຸໜ່ວຍຄວາມຈຳທີ່ໃຊ້ຮ່ວມກັນພາຍໃນ.
HEXEC_LOG_FD
ປະກອບມີຕົວອະທິບາຍໄຟລ໌ສໍາລັບຄວາມຜິດພາດແລະ -print output.
ກະລຸນາຢ່າດັດແປງຕົວແປສະພາບແວດລ້ອມເຫຼົ່ານີ້. ນອກຈາກນັ້ນ, ຈົ່ງລະມັດລະວັງເມື່ອທ່ານໃຊ້ສິ່ງເຫຼົ່ານີ້
ຕົວແປ, ເພາະວ່າຊື່ແລະເນື້ອໃນຂອງຕົວແປອາດຈະມີການປ່ຽນແປງໃນອະນາຄົດ.
ຕົວຢ່າງ
hexec -yam 'gcc' -ປະຕິບັດ ccache {s} \; ເຮັດໃຫ້
ໂທອອກ, ເຊິ່ງຫຼັງຈາກນັ້ນຈະໂທຫາ gcc ຫຼາຍຄັ້ງ. ຊື່ທີ່ປະຕິບັດໄດ້ຂອງແຕ່ລະຄົນ
ການປະຕິບັດຂະບວນການ hooked ແມ່ນການທົດສອບກັບຮູບແບບໄຟລ໌ "gcc" ແລະ "ccache {s}"
ເອີ້ນວ່າແຕ່ລະຄັ້ງທີ່ພົບການແຂ່ງຂັນ. '{s}' ຈະຖືກແທນທີ່ດ້ວຍຕົ້ນສະບັບ (the
hooked) ໂທ. ໃນຕົວຢ່າງນີ້, ການໂທຫາ "gcc -o test.o test.c" ຈະຖືກປ່ຽນແທນ
ດ້ວຍ "ccache gcc -o test.o test.c"
ວິທີການ IT WORKS
ທັງ ໝົດ
ໃຊ້ hexec ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net