Como crear un parche con diff y como aplicarlo con patch (Pagina 1) / Scripts y programación / Foro Wifi-libre.com

El libre pensamiento para un internet libre

No estas registrado.     

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

#1 15-06-2017 16:56:48

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 3,040

Como crear un parche con diff y como aplicarlo con patch

Como crear un parche con diff y como aplicarlo con patch

parche_1.jpg

El otro día hemos hablado de un bug en airmon-ng y como arreglarlo. Bug rfkill de airmon-ng: Arreglo chapuza pero efectivo
   Había de paso reportado el error en el trac de aircrack-ng.
  Resulta que las lineas que cité en la descripción no eran las buenas.
  Tampoco pensé en que repasar un script de miles de lineas no le apetece a nadie.
Lo que hubiera tenido que hacer desde el inicio es mandar un parche para simplificar la vida al desarrollador.
    Sobre todo que crear un parche es de lo más simple.

Crear un parche con diff

 
   Es otro de estos comandos fundamentales UNIX-Linux que uno debería conocer
Su función prima es comparar dos textos y mostrar en consola las differencias entre los dos documentados (dicho de otro modo las lineas iguales no se muestran).
  Como linux está enfocado hacía la colaboración abierta este mismo comando permite crear un parche gracias a sus opciones.
   Hagamos un parche juntos para corregir el bug rfkill aimon-ng
  Edito airmon-ng con mi editor de texto y guardo la versión modificada bajo el nombre de airmon-ng_mod
Abro una consola en la carpeta que contiene airmon-ng (original) y airmon-ng_mod (la versión con las modificaciones hechas)
Ejecuto

diff -Naur airmon-ng airmon-ng_mod > parche_airmon-ng 

Y obtengo un parche que he llamado "parche_airmon-ng"
He empleado con diff una combinación de opciones: -Naur
-u hubiera bastado, sin embargo -Naur es una sintaxis más robusta, así que es mejor emplearla
  Veamos un rato que pinta tiene el parche:

parche_2.jpg

Veis que entre los "@@" se dan las coordenadas de la linea a modificar
Y veis que se usa el símbolo menos y plus para indicar la linea a modificar y la modificación a efectuar.

Aplicar un parche con patch

Patch sirve solo para parchear.
  La sintaxis básica es

patch <programa> <parche>

  Así de fácil.

patch airmon-ng parche_airmon-ng

Si queréis aplicar el parche para arreglar la orden rfkill y la salida en consola

--- airmon-ng	2017-06-15 14:41:36.094598000 +0200
+++ airmon-ng_mod	2017-06-15 11:58:36.393546216 +0200
@@ -298,7 +298,7 @@
 		#immediatly return if rfkill isn't supported
 		return 0
 	fi
-	rfkill_status="$(rfkill unblock ${1#phy} 2>&1)"
+	rfkill_status="$(rfkill unblock "$index" 2>&1)"
 	if [ $? != 0 ]; then
 		printf "rfkill error: ${rfkill_status}\n"
 		printf "Unable to unblock.\n"
@@ -373,9 +373,9 @@
 	rfkill_check ${PHYDEV}
 	rfkill_retcode="$?"
 	case ${rfkill_retcode} in
-		1) printf "\t${1} is soft blocked, please run \"rfkill unblock ${1#phy}\" to use this interface.\n" ;;
+		1) printf "\t${1} is soft blocked, please run \"rfkill unblock "$index"\" to use this interface.\n" ;;
 		2) printf "\t${1} is hard blocked, please flip the hardware wifi switch to on.\n"
-		   printf "\tIt may also be possible to unblock with \"rfkill unblock ${1#phy}\"\n"
+		   printf "\tIt may also be possible to unblock with \"rfkill unblock "$index"\"\n"
 		   if [ "${checkvm_status}" != "run" ]; then
 		   	checkvm
 		   fi
@@ -383,12 +383,12 @@
 		   	printf "Detected VM using ${vm_from}\n"
 		   	printf "This appears to be a ${vm} Virtual Machine\n"
 		   	printf "Some distributions have bugs causing rfkill hard block to be forced on in a VM.\n"
-		   	printf "If toggling the rfkill hardware switch and \"rfkill unblock ${1#phy}\" both fail\n"
+		   	printf "If toggling the rfkill hardware switch and \"rfkill unblock "$index"\" both fail\n"
 		   	printf "to fix this, please try not running in a VM.\n"
 		   fi
 		   ;;
 		3) printf "\t${1} is hard and soft blocked, please flip the hardware wifi switch to on.\n"
-		   printf "\tIt may also be needed to unblock with \"rfkill unblock ${1#phy}\"\n" ;;
+		   printf "\tIt may also be needed to unblock with \"rfkill unblock "$index"\"\n" ;;
 	esac
 	if [ "${rfkill_retcode}" != 0 ]; then
 		printf "rfkill error, unable to start ${1}\n\n"

Desconectado

Anuncio

Wifi-highpower.es es distribuidor oficial de Alfa Network

Temas similares

Tema Respuestas Vistas Ultimo mensaje
5 60 Ayer 23:48:23 por kcdtv
Pegado:
178 18585 Ayer 23:41:26 por managuas
2 134 Ayer 22:45:29 por favy87
17 1309 Ayer 13:14:48 por kcdtv
1 97 Ayer 13:00:04 por kcdtv

Pie de página

Información del usuario

Ultimo usuario registrado: favy87
Usuarios registrados conectados: 1
Invitados conectados: 9

Conectados: M1ck3y

Estadisticas de los foros

Número total de usuarios registrados: 612
Número total de temas: 838
Número total de mensajes: 6,723

Máx. usuarios conectados: 61 el 28-03-2017 00:04:22