разделитель конвейера и некоторые поля с запятой, которые должны быть заключены в двойные кавычки, и предполагается, что они должны рассматриваться как одиночные [закрытые]

Además de la respuesta de Gilles alCan I block non-interactive sudo invocation?aspecto de su pregunta, sugeriría un trabajo -para este elemento particular de su situación:

I don't like typing the password for sudo so I disabled it

y

Now I have a bad side effect that any shell script I run can silently execute sudo on my behalf.

Si su situación es que normalmente sudoejecuta varios comandos, pero luego se encuentra ejecutando secuencias de comandos que ejecutan silenciosamente sudo donde no se le solicita una contraseña para darse cuenta de que root -están pasando cosas, tú podrías:

  1. Retire la opción NOPASSWD
  2. Ampliar el tiempo de espera de la marca de tiempo más allá del stock de 5 minutos para que sea un período de tiempo más largo
  3. Elimine la marca de tiempo sudo antes de ejecutar un script que no sea de confianza

Ya sabes cómo editar sudoers para la opción NOPASSWD.

Para ampliartimestamp_timeouten el archivo sudoers, configúrelo en un valor realmente alto o negativo. Fragmentos relevantes de la página del manual para ese parámetro:

timestamp_timeout

Number of minutes that can elapse before sudo will ask for a passwd again.

The default is 5.

If set to a value less than 0 the user's time stamp will not expire until the system is rebooted.

Cuando se encuentre a punto de ejecutar un script del que no esté seguro, simplemente ejecutesudo -kpara "matar" la marca de tiempo:

-k

When used without a command, invalidates the user's cached credentials. In other words, the next time sudo is run a password will be required.

Si ejecuta un script y Sudo le solicita su contraseña, sabrá que sudofue invocado y podrá interrumpir el script si lo desea.

Como un aparte aquí, recomiendo configurar el parámetro passprompt para incluir el texto sudoen él, como:

Defaults passprompt="[sudo] password for %u:"

... para que sea obvio si/cuando Sudo solicita su contraseña (frente a cualquier otra herramienta ).

-3
06.03.2019, 15:35
2 ответа

Использование csvformatиз csvkit:

$ csvformat -d '|' file.csv
India,Andhra,"asd,ged,ijn",telangana,41657,"hgjd,dfef,edf",dfd

Инструменты в наборе инструментов csvkit поддерживают CSV -(, все они являются синтаксическими анализаторами CSV для изменения и запроса и обычно работают с CSV-файлами в командной строке ).

Здесь я использую csvformatдля переформатирования входного файла и указываю, что разделитель полей во входных данных является вертикальной чертой, используя -d '|'. Вывод по умолчанию будет использовать запятые в качестве разделителей полей, и инструмент будет экранировать и цитировать вещи по мере необходимости.

2
28.01.2020, 05:19

Если у вас установлен ruby ​​:

ruby -rcsv -e '
    rdr = CSV.new(File.new(ARGV.shift), col_sep: "|")
    wtr = CSV.new($stdout)
    rdr.each {|row| wtr << row}
' file.csv
India,Andhra,"asd,ged,ijn",telangana,41657,"hgjd,dfef,edf",dfd
0
28.01.2020, 05:19

Теги

Похожие вопросы